对于函数添加一些知识点
嘟嘟嘟,小汽车开起来.
先回顾下昨日内容
函数:对功能或动作的封装
语法:
Def 函数名(形参列表)
函数体(代码块,return)
函数名(实参列表)
形参:在函数声明的位置的是实参(变量)
实参:在函数调用的时候给函数的形参传递信息的值
传参:把实参的值交给形参的过程
返回值:
Return 可以终止一个函数的执行
1. 什么都不写,不写return ,返回none
2.只写return 后面什么都系都不加的话,返回的也是none
3.return 值,有一个返回值
4.return 值1.值2.值3...多个返回值.接受的是元祖(不可变)
参数:
形参:
- 位置参数
- 默认值参数
- 动态参数
实参:
- 位置参数
- 关键字参数
- 混合参数, 顺序:先位置后关键字
今日主要内容
- 函数的动态参数
- *args 位置参数动态传参
- **kwargs 关键字参数动态传参 返回的是一个字典相对应
顺序 可以混搭 但是必须要前后一致
顺序 位置参数,*args,,默认值参数,**kwargs
形参的位置*,**:聚合
实参的位置*,**:打散
2.命名空间
1. 内置名称空间
2. 全局名称空间
3. 局部名称空间
作用域:
- 全局作用域: python内置函数+全局
- 局部作用域:局部(函数被调用)
Globals()查看全局中的内容
Locals()查看单签作用域中的内容
- 函数可以互相的嵌套
4. global: 在局部访问全局中的内容
Nonlocal: 在局部寻找外层函数忠离他最近的那个变量
单行注释
'''多行注释'''
函数注释
def func(a, b):
"""
这个函数是用来计算a和b的和
:param a: 第一个数据
:param b: 第二个数据
:return: 返回的是两个数的和
"""
return a + b
print(func.__doc__) # document文档
接收所有参数
def func(*args, **kwargs):# 无敌 *args相当于一个聚合的作用
print(args, kwargs)
结合具体的实例
形参: 聚合
def func(*food): # 聚合, 位置参数
print(food)
lst = ["鸡蛋","煎饼果子","猪蹄","滋滋冒油"]
# 实参: 打散
func(*lst) # 打散. 把list, tuple, set, str 进行迭代打散
聚合成关键字参数
def func(**kwargs):
print(kwargs)
dic = {"name":'alex', 'age':'18'}
func(**dic) # 打散成关键字参数
def fn(): # fn也在全局名称空间
b = 20 # 局部名称空间
print(a)
def gn():
print(a)
fn()
gn()
1. 内置, 2. 全局 , 3. 局部(函数调用)
a = 110 # 全局
def fn(): #
b = 20 # 局部
def gn(): # 局部
print(globals()) # 可以查看全局作用域中的内容
print(locals()) # 查看当前作用域中的内容
gn()
fn()
def outer():
print("哈哈")
def inner_1():
print("呵呵")
def inner_1_1():
print("嘻嘻")
inner_1_1()
print("吼吼")
def inner_2():
print("嘿嘿")
inner_2()
inner_1()
outer()
a = 1
def fun_1():
a = 2
def fun_2():
global a
a = 3
def fun_3():
a = 4
print(a)
print(a)
fun_3()
print(a)
print(a)
fun_2()
print(a)
print(a)
fun_1()
print(a)
运行结果是1234323