Python连载笔记(四)——————函数与面向对象

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/qq_42025108/article/details/102689231

一、函数

"""
    函数的概念:
        函数是一组Python语句的组合,他们可以在程序中使用一次或者多次。
        大大提高开发的效率,减少复制粘贴的操作
        Sublime
    函数定义的格式:
        def 函数名():
            语句
    函数调用的格式:
        函数名()
"""
def fozu():
    print("                            _ooOoo_  ")
    print("                           o8888888o  ")
    print("                           88  .  88  ")
    print("                           (| -_- |)  ")
    print("                            O\\ = /O  ")
    print("                        ____/`---'\\____  ")
    print("                      .   ' \\| |// `.  ")
    print("                       / \\||| : |||// \\  ")
    print("                     / _||||| -:- |||||- \\  ")
    print("                       | | \\\\\\ - /// | |  ")
    print("                     | \\_| ''\\---/'' | |  ")
    print("                      \\ .-\\__ `-` ___/-. /  ")
    print("                   ___`. .' /--.--\\ `. . __  ")
    print("                ."" '< `.___\\_<|>_/___.' >'"".  ")
    print("               | | : `- \\`.;`\\ _ /`;.`/ - ` : | |  ")
    print("                 \\ \\ `-. \\_ __\\ /__ _/ .-` / /  ")
    print("         ======`-.____`-.___\\_____/___.-`____.-'======  ")
    print("                            `=---='  ")
    print("  ")
    print("         .............................................  ")
    print("                  佛祖镇楼                  BUG辟易  ")
    print("          佛曰:  ")
    print("                  写字楼里写字间,写字间里程序员;  ")
    print("                  程序人员写程序,又拿程序换酒钱。  ")
    print("                  酒醒只在网上坐,酒醉还来网下眠;  ")
    print("                  酒醉酒醒日复日,网上网下年复年。  ")
    print("                  但愿老死电脑间,不愿鞠躬老板前;  ")
    print("                  奔驰宝马贵者趣,公交自行程序员。  ")
    print("                  别人笑我忒疯癫,我笑自己命太贱;  ")
    print("                  不见满街漂亮妹,哪个归得程序员?")

num = input("请输入星期数:")
if num == "1" or "3" or "5" or "7":
    fozu()
elif num == "2" or "4" or "6":
    fozu()
else:
    print("输入有误!")

def num_judge1(n):
    str1 = "1"
    for i in range(n):
        str1 = str1 + str(i + 1)
    while True:
        judge1 = input("请输入要执行操作:")
        if (judge1 in str1) and (len(judge1) == 1):
            return  judge1
            break
        else:
            print("操作有误,请重新选择:")

print(type(num_judge1(2)))
"""
    函数的参数:
        def 函数名()
            语句1
        如果定义参数是:*args,**kwargs
            参数类型不限,个数也可以不限
        1.*args      主要接受:数字,字符串,列表
        2.**kwargs   主要接收 位置传参,如:字典

        位置传参:
            指定 某个 的值的多少

    注意:
        1.python中不存在重载
        2.*args,**kwargs只是约定俗成的写法,就是说不是系统的规定
        3.顺序传参,参数必须写在位置传参的前面 不能出现顺序参数和位置传参指向同一个形参
"""
#******************************************************************
def add1(*a,**b):
    print(*a)
    print(b)

add1(1,2,"ad","adff",{2},{1},"ad",{"w"})

add1(a = 1,b =2)
#******************************************************************
def add2(a,b):
    print(a)
    print(b)
#******************************************************************
"""
    使用函数实现一个计算器:
    
        1.由用户输入第一个值和第二个值:a,b
        2.当用户回车的一瞬间,给出结果
        比如:
            请输入计算类型:*
            请输入第一个值:4
            请输入第二个值:5
            打印:
                结果是:20
"""
#******************************************************************
def add2(a,b):
    print("结果是:%s" %(a + b))

def sub2(a,b):
    print("结果是:%s" %(a - b))

def mul2(a,b):
    print("结果是:%s" %(a * b))

def div2(a,b):
    print("结果是:%s" %(a / b))

str1 = input("请输入计算类型:")
num1 = eval(input("请输入第一个数:"))
num2 = eval(input("请输入第一个数:"))

if str1 == "+":
    add2(num1,num2)
elif str1 == "-":
    sub2(num1,num2)
elif str1 == "*":
    mul2(num1,num2)
elif str1 == "/":
    if num2 == 0:
        print("输入不合法!")
    else:
        div2(num1,num2)
else:
    print("输入有误!")
#******************************************************************
"""
    函数也是语句,可以嵌套使用
        概念:
            所谓的函数嵌套,是指在一个函数中调用了另外一个函数
"""
#******************************************************************
def fun1():
    print("这是函数1")
    fun2()
    print("这里是函数1")

def fun2():
    print("这是函数2")

fun1()
#******************************************************************
"""
    局部变量:函数类别普通赋值得出的变量
        在函数内部定义的变量
        
    全局变量:函数外部赋值的变量
        1.变量可以在多个函数中使用
        2.若全局和局部变量名字一样,在函数中局部变量会暂时屏蔽全局变量
        3.全局变量在函数中修改的问题
            如果要在函数内部修改全局变量,需要用global函数进行声明
        注意:
          可变类型不需要额外声明,比如:列表可以直接通过append进行添加操作
"""
#******************************************************************

#******************************************************************

二、面向对象

""""""
C和前篇笔记学的内容,是面向过程的语言
#买电脑
    第一种:
        1.看配置:
            查看电脑参数,内存,显卡,外观,价格
        2.网上去搜
        3.比价格
        4.某东:mac 12800  某宝:9999做活动
        5.电脑城:8888  电脑售卖元
        6.买了电脑城 ———> 回家 ———> 蓝屏 ———> 返厂
        7.等电脑回来
        8.没了
    第二种:
        1.自己预定好价格,然后告诉我懂电脑的朋友
        2.给钱他,他去买
        3.开始LOL

面向对象和面向过程的区别:
    1.面向过程,每一步都是亲力亲为,从上到下写代码
    2.函数式编程,将功能封装,减少代码的重复复制
    3.将代码和函数分类,然后调用
    4.面向过程更容易被人接受,面向对象是抽象的

面向对象解决问题的重点:
    1.面向对象解决问题的思想:
        遇到问题不需要自己去解决,找个专业的工具,直接调用 
    
    类 和 对象
    类:
        类其实就是一个模板,里面封装了很多函数和方法(抽象的)
        将多个对象的共同特征和行为抽象为一个类
    对象:
        是一个存在的实例,他是被类创建出来的
    创建格式:
        class 类名:
            '各个函数和语句'
            def _init_(self)
                语句1
                
            def run(self)
                语句2
            
            ......
    如何使用类:
        对象 = 类名()
        对象.run()
    
    class:类的关键字
    _init_:用来初始化,构造函数,在对象创建的时候自动调用
    类中的函数和方法都属于对象的,可以通过对象去调用     
"""
#*********************************************************************
创建一个Dog类
 class Dog:
     def __init__(self,name):
         #self 代表的是当前实例或者对象
         self.name = name

     def show(self):
         print("这是一只%s"%self.name)

 hsq = Dog("哈士奇")
 hsq.show()
#*********************************************************************
def show(self):
    print("这是一只%s" % self.name)
hsq.show()
#*********************************************************************
"""
    函数式编程和类编程的区别:
        类编程:
            1.创建一个对象 
            2.通过对象执行函数
        函数式编程:  
            1.直接执行函数 
    按照这个场景,函数比类方便简单
    
    场景2:
        创建一个狗类:
            跑 姓名 品种
        分别使用函数实现 五只狗:
            小金是一只金毛,它很会跑
            小哈是一只哈士奇,它很会拆家
            小单是一只单身狗,它很会吃狗粮
            小迪是一只泰迪,它很会哭
            小美是一只博美,它很会撒娇
            
"""
#*********************************************************************
class Dog1:
    def __init__(self,name,pz):
        self.name = name
        self.pz = pz


    def run(self):
        print("%s是一只%s,它很会跑" % (self.name, self.pz))

    def brk(self):
        print("%s是一只%s,它很会拆家" % (self.name, self.pz))

    def eat(self):
        print("%s是一只%s,它很会吃狗粮" % (self.name, self.pz))

    def cry(self):
        print("%s是一只%s,它很会哭" % (self.name, self.pz))

    def cop(name, pz):
        print("%s是一只%s,它很会撒娇" % (name, pz))

jm = Dog1("小金","金毛")
jm.run()
#*********************************************************************
"""
    注意:
        self 代表当前对象,但是self这个单词也是约定俗成的,可以自己更换并且不用自己去传参
    
        class Person(object):
            #这种定义方式是新式类,显示的继承object:
    
        class Person1:
            #这种定义方式叫经典类,也是Python3的表示方法
    面向对象的特征:
        1.封装:将一段代码进行封装,实现代码的可重用性
        2.继承:将类的共同属性进一步抽象,形成父类
        3.多态:在Python中的并不多,定义类型与调用时不同
    
    继承:
        猫:喵喵叫 会跑 会跳 颜色
        狗:汪汪叫 会跑 会跳 颜色
    定义动物类: 叫 会跑 会跳 颜色
"""
#*********************************************************************
class animal:
    def run(self):
        print("会跑")

    def jiao(self):
        print("会叫")

class G(animal):
    def __init__(self,name,jiao,color):
        self.name = name
        self.jiao1 = jiao
        self.color = color

    def jiao(self):
        print("会%s叫"%self.jiao1)

    def show(self):
        print(self.color)


class M(animal):
    def __init__(self, name, jiao, color):
        self.name = name
        self.jiao1 = jiao
        self.color = color

    def jiao(self):
        print("会%s叫" % self.jiao1)

    def show(self):
        print(self.color)

if __name__ == "__main__":
    m1 = M("小白", "喵喵", "黑色")
    m1.jiao()
    m1.show()
    # *********************************************************************

    """
        if __name__=="__main__"
        
        __name__:用来记录名字的,程序中有些代码是用来调试的,不希望被别人看见
        ,定义一个main(主入口),把调试代码放到它的下面
    """


猜你喜欢

转载自blog.csdn.net/qq_42025108/article/details/102689231
今日推荐