学习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
 

 

posted @ 2018-10-30 21:57  DanielYang11  阅读(162)  评论(0编辑  收藏  举报