万能参数,命名空间,函数的嵌套
万能参数
*的魔性用法
- 
#万能参数 可以接受所有的实参。 万能参数:*args,约定俗称:arge 函数定义时,*代表聚合。他将所有的位置参数聚合成一个元祖,赋值给了args。 def eat(*args): print(args) print('我请你吃:%s,%s,%s,%s,%s,%s'%args) eat('蒸羊羔','蒸熊掌','蒸鹿影','烧花鸭','烧雏鸡','烧子鹅') #写一个函数:计算你传入函数的所有数字的和。 def func(*args): count=0 for i in args: count+=i return count print(func(1,2,3,4,5)) **kwargs 函数的定义时:**将所有的关键字参数聚合到一个字典中,将这个字典赋值给了kwargs def func(**kwargs): print(kwargs) func(name='alex',age=73,sex='laddyboy')
- 
万能参数:*args,**kwaygs, def func(*args,**kwargs): print(arhs) print(kwargs) func() #在函数调用时,*代表打散。**代表打散字典 def func(*args,**kwargs): print(args) print(kwargs) func(*[1,2,3,4],*[22,33]) #func(1,2,3,22,33) func(**{'name':'太白'},**{'age':18}) #func(name='太白',age='18')
- 
仅限关键字参数(了解) 
- 
形参的最终顺序 - 
#形参角度的参数顺序 *args的位置 def func(*args,a,b,sex='男'): print(a,b) func(1,2,3,4) #args得到实参的前提,sex必须被覆盖 def func(a,b,*args,sex='男'): print(a,b) print(sex) print(args) func(1,2,3,4,5,sex='女') #**kwargs 位置 def func(a,b,*args,sex='男',**kwargs): print(a,b) print(sex) print(args) print(kwargs) func(1,2,3,4,5,sex='女',name='alex',age=80) #形参角度第四个参数:仅限关键字参数(了解) def func(a,b,*args,sex='男',c,**kwargs): print(a,b) print(sex) print(args) print(c) print(kwargs) func(1,2,3,4,5,sex="女",c='666',name='alex',age=80) #形参角度最终的顺序:位置参数,*args,默认参数,仅限关键字参数,**kwargs
 
- 
- 
名称空间 - 
全局名称空间 
- 
局部名称空间 
- 
加载顺序,取值顺序 #命名空间。 #python分为三个空间 #内置名称空间(builtins.py) #全局名称空间(当前py文件) #局部名称空间(函数,函数执行时才开辟) #加载顺序: #内置命名空间--->全局名称空间--->局部名称空间(函数执行时) #取值顺序(就近原则)单项不可逆 LEGB原则 def func(): print(input) func() #(从局部找时)局部名称空间--->全局名称空间--->内置名称空间 input = '太白金星' def func(): input = 'alex' func() print(input)
 
- 
作用域。
#两个作用域;
	#全局作用域:内置名称空间
    #局部作用域:局部名称空间
    
局部作用域可以引用全局作用域的变量
date = '星期五'
def func():
    a = 666
    print(date)
print(a)
func()
print(a)
局部作用域不能改变全局变量。
count = 1
def func():
    count += 2
    print(count)
func()	# local variable 'count' referenced before assignment
局部作用域不能改变全局作用域的变量,当python解释器读取到局部作用域时,发现了你对一个变量进行修改
解释器会认为你在局部已经定义过这个去不得变量了,他就从局部找这个局部变量,报错了。
#可以使用,不能修改
def func():
    count = 1
    def inner():
        print(count)
    inner
func()
函数的嵌套(高阶函数)
def func1():
    print('in func1')
    print(3)
    
def func2():
    print('in func2')
    print(4)
    
func1()
print(1)
func2()
print(2)
#in func1 3 1 in func2 4 2
def func1():
    print('in func1')
    print(3)
    
def func2():
    print('in func2')
    func1()
    print(4)
    
print(1)
func2()
print(2)
def func2():
    print(2)
    
    def func3():
        print(6)
        
     print(4)
    fun3c()
    print(8)
    
print(3)
fun2()
print(5)
内置函数 globals locals
a = 1
b = 2
def func():
    name = 'alex'
    age =73
    print(globals())#返回的是字典:字典里面的键值对:全局作用域的所有内容
    print(locals())#返回的是字典:字典里面的键值对:当前作用域的所有内容
print(globals())#返回的是字典:字典里面的键值对,全局作用域的所有内容
print(locals())#返回的是字典:字典里面的键值对:当前作用域的所有内容
func()

 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号