def func(* jiemu): # 在形參這裏把接受過來的實參進行聚合,集合成一個元組 print(jiemu) func('奇葩說','知識就是力量','老梁說故事','吐槽大會') # 結果:('奇葩說', '知識就是力量', '老梁說故事', '吐槽大會')
def func(**tianqi): # 聚合, ** 聚合成字典 print(tianqi) # func(1,2,3,4,5) # 位置參數或報錯, func() takes 0 positional arguments but 5 were given func(today='晴天', tomorrow='大晴天', yesterday='陰天') # 結果:{'today': '晴天', 'tomorrow': '大晴天', 'yesterday': '陰天'}
# 無敵參數 def func(*args,**kwargs): # argument 參數 key argument 關鍵字參數 print(args,kwargs) func('a','b',1,2,3,f='小熊',g = '小虎') # 結果:('a', 'b', 1, 2, 3) {'f': '小熊', 'g': '小虎'}
def eat(*food): print(food) eat(*"你今天吃了什麼") # 結果:('你', '今', '天', '吃', '了', '什', '麼')
** 在形參表示動態傳參 -- 關鍵字參數; 打散,打散成關鍵字 python
def tianqi(**day): # 聚合,聚合字典 print(day) dic = {'today':'晴天','tomorrow':'要下雪',} # 打散,打散關鍵字 tianqi(**dic,abs= '仍是要下雪') # 結果:{'today': '晴天', 'tomorrow': '要下雪', 'abs': '仍是要下雪'}
a = 10 def func(): a = 20 c = 30 def abc(): print('who are you?') print(a,c) # 這裏使用的是局部做用域 print(globals()) # 打印全局做用域中的內容 print(locals()) # 打印局部做用域中的內容 func()
3、函數的嵌套 函數
def func1(): print(1) def func2(): print(2) def func3(): print(3) func3() print(4) func2() print(5) func1()
4、關鍵字global和nonlocal spa
a = 10 def func2(): a = 20 print('內部的:',a) func2() print('外部的:',a) # 內部的: 20 # 外部的: 10
global表示,再也不使用局部做用域中的內容了,而改用全局做用域中的變量 code
# 全局變量通常是不能隨意改變得 a = 10 def func2(): # 慎用 global a # 表示從全局把一個變量引到局部,後面使用的a都是全局變量 a += 20 # 如今a 是全局變量,在試圖改全局變量 print('內部的:',a) func2() print('外部的:',a) # 內部的: 30 # 外部的: 30
在局部引入一個全局變量,若是這個變量在全局不存在,global會自動建立一個全局變量blog
def func(): global a # 建立一個全局變量 a = 10 print(a) func() print(a)
nonlocal 表示在局部做用域中,調用父級命名空間(離它最近的一個)中的變量 作用域