学习python的第十天------函数的进阶
本节主要内容:
1. 函数参数--动态传参
2. 名称空间, 局部名称空间, 全局名称空间, 作⽤用域, 加载顺序.
3. 函数的嵌套
4. gloabal, nonlocal关键字
⼀一. 函数参数--动态传参
1. 动态接收位置参数
def chi(*food, a, b):
print("我要吃", food, a, b)
chi("⼤大⽶米饭", "⼩小⽶米饭", a="⻩黄⽠瓜", b="茄⼦子")
def chi(*food):
print("我要吃", food)
chi("⼤米饭", "⼩米饭")
结果: 我要吃 ('大米饭', '小米饭') # 多个参数传递进去. 收到的内容是元组tuple
在python中使⽤**来接收动态关键字参数
def func(**kwargs):
print(kwargs)
func(a=1, b=2, c=3)
func(a=1, b=2) 结果: {'a': 1, 'b': 2, 'c': 3} {'a': 1, 'b': 2}
最终顺序(*):
位置参数 > *args > 默认值参数 > **kwargs
三. 函数的嵌套
# 函数的嵌套 def fun2(): print(222) def fun3(): print(666) print(444) fun3() print(888) print(33) fun2() print(555)
四. 关键字global和nonlocal
a = 100 def func(): global a # 加了了个global表示不不再局部创建这个变量量了了. ⽽而是直接使⽤用全局的a a = 28 print(a) func() print(a)
nonlocal 表⽰示在局部作⽤用域中, 调⽤用⽗父级命名空间中的变量.
a = 10 def func1(): a = 20 def func2(): nonlocal a a = 30 print(a) func2() print(a) func1() 结果: 加了了nonlocal 30 30 不不加nonlocal 30 20