19-3-14Python中函数的进阶

1.动态参数:

  

def func(*args):    #在形参位置*叫做聚合
    print(args)     #元组形式

func(1,2,3,4,5,6)

def func(**kwargs):  # 动态关键字参数
    print(kwargs)


func(a=1, b=2, c=3)  # 关键字的形式传参

*args 和 **kwargs

  是可以更换的,但是程序员约定都用它

  用途:在不明确接收参数、数量时使用*args和**kwargs

位置参数>动态的位置参数

形参:位置>动态位置>默认参数>动态默认参数

实参:位置>关键字参数

在实参调用的时候,*将可迭代的对象打散,字典是将键取出

在形参出现*就是在聚合

在实参调用的时候,**将字典打散成  关键字参数(键=值)

在形参处出现**就是将关键字参数聚合成一个字典。

  注意:参数arg*args**kwargs三个参数的位置必须是一定的。必须是(arg,*args,**kwargs)这个顺序,否则程序会报错。

2.函数的注释

  print(aaa._doc_)查看注释

3.名称空间

1.     内置空间中所有代码——内置空间

2.     自己写的py文件——全局空间

3.     函数中的代码——局部空间

*注:

       加载顺序:
                    
内置空间——>全局空间——>局部空间

       查找值的顺序:

                     局部空间——>全局空间——>内置空间——>报错

              作用域:

                            全局作用域 内置+全局=全局作用域

 

                            局部作用域 函数内的就是局部作用域

a = 10

def func():
    global a        #global:声明a为全局变量。//找到要修改的值,修改后放回
    a += 1

func()
print(a)

4.函数的嵌套

第一种函数嵌套:函数嵌套函数

第二种函数嵌套:多个函数嵌套

5.global nonlocal

nonlocal:在一个局部空间内,nonlocal会修改离他最近的那个变量,如果上一层没有就继续向上找,直到走到局部空间头部,都没有则报错。

 

              global:在局部修改全部变量,如果没有就创建一个新的。

 

def func(*args):    #在形参位置*叫做聚合

    print(args)     #元组形式

 

func(1,2,3,4,5,6)

 

def func(**kwargs):  # 动态关键字参数

    print(kwargs)

 

 

func(a=1, b=2, c=3)  # 关键字的形式传参

原文地址:https://www.cnblogs.com/1oo88/p/10530627.html