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

2020-04-03 14:44:18 浏览数 (1)

1.动态参数:

代码语言:javascript复制
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. 函数中的代码——局部空间

*注:

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

查找值的顺序:

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

作用域:

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

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

代码语言:javascript复制
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)  # 关键字的形式传参

0 人点赞