zoukankan      html  css  js  c++  java
  • python基础--函数1

    # 一,为什么使用函数
    #   1,可以使代码的组织结构清晰,可读性好
    #   2,遇到重复的问题可以直接调用函数
    #   3,功能扩展时,可直接修改,而无需每处都进行修改、
    # 二,函数为何物
    # 函数对程序员相当于巧妇之于米,蓝翔之于挖掘机
    # 学生之于书本。
    # 三,函数分类
    # 1,内置函数,python解释器已经给我们定义好了很多函数,方便我们用来
    #   开发,我们可以直接拿来用,而不用定义,例如:len,man,min,sum
    # 2,自定义函数,很显然python内置的函数功能是有限的,要不然我们也不用学习了,
    #   直接进行调用就可以了,需要我们自己根据需求来定制函数、
    # 四。定义函数
    def max_num(num1,num2):
        if num1 > num2:
            return num1
        else:return num2
    # 函数名:max_num:应该见名知意,
    # 参数:num1,num2:调用时应该根据是否有参数来决定是否需要传参
    # 返回值:不写默认返回为空
    # 需要先进行定义,在调用
    # num = sum_num(3,6)
    # def sum_num(num1,num2):
    #     return num1 + num2
    # 上边这个写法是不对的。
    # 函数定义的时候,只检测语法,不执行代码,
    # 也就是说语法错误在函数定义阶段会被检测出来,
    # 代码的逻辑错误只有在执行的时候才会知道
    # 五,调用函数
    # 函数名加括号,传入参数,是否有返回值
    
    # 六,函数的参数
    # 形参即变量名,实参即变量值,函数调用时,将值绑定到变量名上,
    # 函数调用结束时,解除绑定
    def modify_num(num1,num2):
        num1 = 5
        num3 = 6
    n1,n2 = 3,5
    modify_num(n1,n2)
    print(n1,n2)
    # 形参为num1,num2,实参为3,5
    # 此时n1,n2的值还是不会变得,
    # 几种函数参数:
    # 1,位置参数:按照从左向右顺序定义的参数
    #   位置形参:必选参数,位置实参:按照位置给形参传值
    # 2,关键字参数:按照key=value的形式定义实参
    #   不用按照位置为形参传值
    #   (1),关键字参数必须在位置实参右边
    #   (2),对同一个形参不能重复传值
    # 3,默认参数:在定义是就已经为其赋值
    # 可以传值,也可以不穿值,
    #   1,只在定义时赋值一次,
    #   2,默认参数的定义应该在位置形参右边
    #   3,通常为不可变类型
    # 4,可变长参数:
    # 实参的值得个数不固定,
    # 实参有按位置和关键字两种形式定义,*args,**kwargs.
    def foo(x, y, *args):
        print(x, y)
        print(args)
    foo(1, 2, 3, 4, 5)
    
    def foo(x, y, *args):
        print(x, y)
        print(args)
    foo(1, 2, *[3, 4, 5])
    
    def foo(x, y, z):
        print(x, y, z)
    foo(*[1, 2, 3])
    
    
    def foo(x, y, **kwargs):
        print(x, y)
        print(kwargs)
    foo(1, y=2, a=1, b=2, c=3)
    
    def foo(x, y, **kwargs):
        print(x, y)
        print(kwargs)
    foo(1, y=2, **{'a': 1, 'b': 2, 'c': 3})
    
    def foo(x, y, z):
        print(x, y, z)
    foo(**{'z': 1, 'x': 2, 'y': 3})
  • 相关阅读:
    日志分析zz
    通过一个非法的指针或者NULL指针调用成员函数会发生什么?
    Android应用程序进程启动过程的源代码分析
    Android应用程序消息处理机制(Looper、Handler)分析
    Android应用程序绑定服务(bindService)的过程源代码分析
    Android系统进程Zygote启动过程的源代码分析
    Android应用程序注册广播接收器(registerReceiver)的过程分析
    Android系统的智能指针(轻量级指针、强指针和弱指针)的实现原理分析
    Android系统默认Home应用程序(Launcher)的启动过程源代码分析
    Android应用程序安装过程源代码分析
  • 原文地址:https://www.cnblogs.com/cong12586/p/11353668.html
Copyright © 2011-2022 走看看