python3 函数

2020-01-03 11:36:24 浏览数 (1)

代码语言:javascript复制
形式参数:
实际参数:固定数参数
默认参数:给参数一个默认值,赋予新值时覆盖默认值。
位置参数:sys.argv[XX]

代码名称、函数、变量不可以与系统默认参数、模块名字相同

if __name__ == '__main__':
__name__:
    在主动调用的时候返回__main__(意思就是主动调用这个函数)
    在被动调用的时候返回__foo__(像导入模块的时候,顺带到这个地方,并不是要执行它的时候返回foo)
    所以在if __name__ == '__main__':下面的代码是属于在主动调用的时候才执行。
    前向引用:
    def foo():
        print('in foo')
        bar()   #此时函数的内容并没有执行,当调用的时候才开始真正的执行函数

    #foo()  如果这个时候调用foo()函数的话,会报错,因为bar函数还没有生成
    def bar():
        print('in bar')

    foo()

内部函数/内嵌函数:
    def foo():
        print('in foo')
        def bar():
            print('in foo-bar')
        bar()

    foo()               
    #函数bar()只能在foo函数内部调用,foo函数结束bar则结束,类似于局部变量的意思

函数操作符:
    使用一对圆括号()调用函数,如果没有圆括号,只是对函数的引用
    任何输入的参数都必须放置在括号中
    调用:把函数执行一遍
    引用:把函数本身指向引用者
    >>> def func():
    ...     return 'hello wlrkd'
    ... 
    >>> a = func()
    >>> b = func
    >>> a
    'hello wlrkd'
    >>> b
    <function func at 0x7f90fc1afe18>
    >>> b()
    'hello wlrkd'

关键字参数:
    关键字参数的概念仅仅针对函数的调用
    这种理念是让调用者通过函数调用中的参数名字来区分参数
    这样规范允许参数缺失或者不按顺序
    def get_ingo(name, age):
        print('%s is %s years old' % (name, age))

    get_ingo('bob', 23)
    get_ingo(23, 'bob')
    get_ingo(age=23, name='bob')
    #get_ingo(age=23, 'bob')  #错误,关键字参数必须在后
    #def func(age=23, name):    #错误,定义函数时,有默认值的参数必须在后
    # get_ingo(23, name='bob')    #错误,name变量得到了多个值
    # get_ingo('bob', 23, 24)     #错误,调用函数时,实参个数要与形参个数相同
    get_ingo('bob', age=23)

参数组:
    python允许程序员执行一个没有显示定义参数的函数      
    相应的方法是通过一个把元组(非关键字参数)或字典(关键字参数)作为参数组传递给函数

    def get_args(*args):  #一个*号代表以元组形式接收参数
        print(args)

    def get_kwargs(**kwargs):   #两个*号代表以字典形式接收参数
        print(kwargs)

    def get_info(name, age):
        print('%s is %s years old' % (name, age))

    if __name__ == '__main__':
        get_args()
        get_args('abc')
        get_args(10, 20,30, 40)
        get_kwargs()
        get_kwargs(name='bob', age=25) 
        info = ['bob', 23]
        get_info(*info) #在实参传递的时候以一个*号,代表字符串字符串、元组、列表
        info_dict = {'name':'azj', 'age':25}
        get_info(**info_dict)   #两个*号代表的是字典的含义,将字典进行传递

        ()
        ('abc',)
        (10, 20, 30, 40)
        {}
        {'name': 'bob', 'age': 25}
        bob is 23 years old
        azj is 25 years old

0 人点赞