函数的进阶

函数的进阶

动态参数

*args  动态位置参数 

*在形参位置叫做聚合

以位置的形式传参  得到的是元组

**kwargs  动态默认参数

**在形参的时候是聚合  

以关键字的形式传参  得到的是字典

args 和 kwargs 是可以更换的,但程序员约定都是它

用途

在不明确接受参数的数量时,用*args 和 **kwargs

参数位置

形参 : 位置参数 > 动态位置参数(*args) > 默认参数 > 动态默认(关键字)参数(**kwargs)

实参 : 位置参数 > 关键字参数

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

在形参处出现*就是在聚合

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

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

函数的注释

定义完函数后写 """ """ 即可添加注释

查看注释  print(函数名.__doc__)

查看函数名 print(函数名.__name__)

名称空间

内置空间:内置空间中所有代码

全局空间:自己写的py文件

局部空间:函数中的代码

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

取值(查找)顺序:局部空间 > 全局空间 > 内置空间    (找不到就报错)

作用域

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

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

global 和 nonlocal

global:声明要在全局里修改一个变量 在局部修改全局变量,没有就创建一个

nonlocal:在一个局部空间内,nonlocal会修改离它最近的变量,如果上一层没有,就继续向上找,直到局部空间头部

函数的嵌套

原文地址:https://www.cnblogs.com/biulo/p/10533133.html