生活随笔
收集整理的這篇文章主要介紹了
动态参数与global和nonlocal
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1. 動態(tài)參數
位置參數的動態(tài)參數: *args
關鍵字參數的動態(tài)參數 : **kwargs
順序:
位置,*args,默認值,**kwargs
在形參上*聚合, **聚合
在實參上*打散, **打散
def chi(good_food, bad_food,drink, ice, jiu):print("我要吃", good_food, bad_food)chi("蓋澆飯", "辣條")位置參數 > *動態(tài)參數 > 默認值參數def chi( *food, a, b): # 可以傳入任意的位置參數print("我要吃", food) # 動態(tài)參數接收到的是tuple類型的數據chi("蓋澆飯", "辣條", "面條")
def func(a, b, c, *args, d = 5):print(a, b, c, d, args)func(1,2,3)
func(1,2,3,4,5,6,7, d ="馬大哈")def chi(*food):print("我要吃", food)寫函數. 給函數傳遞任意個整數. 返回這些數的和
def he(*n):sum = 0for e in n:sum += ereturn sum
print(he(5))動態(tài)接收關鍵字參數*位置參數
**關鍵字參數
def func(**food): # **food動態(tài)接收關鍵字參數print(food) # 接收到的是字典func(good_food="蓋澆飯", bad_food="辣條", drink="冰封")關鍵字參數一定在位置參數后面
位置參數 > *args > 默認值 > **kwargs這個函數可以接收所有的參數(無敵的)
def func(*args, **kwargs):print(args)print(kwargs)
func(1, 2, 5, 6, name="taibai",age=18, sex="不詳")把列表中的每一個元素作為參數, 傳遞給函數. 一次都傳過去def func(*args, **kwargs): # *表示聚合,所有的位置參數, 聚合成元組 **聚合成字典print(args)print(kwargs)# lst = ["馬虎疼", "大洋哥", "小花生", "毛尖妹妹"]
# func(*lst) # 實參, 打散, 迭代產生的dic = {"name":"太白", "alex":"wuse"}
func(**dic) # 把字典打散. 以key=value形式進行傳參def func(a, b):"""計算a+b的和, 返回一個數:param a: 第一個數:param b: 第二個數:return: 返回計算之后的和"""return a + b定義函數
def 函數名(形參): 1.位置參數, 2, *args, 3.默認值參數, 4. **kwargs函數體 return 返回值
函數名(實參) 1. 位置參數. 2.關鍵字參數. 3. 混合參數,
2. 命名空間和作用域
命名空間:
1. 內置命名空間: python解釋內部運行時的變量函數
2. 全局命名空間: 我們在py文件中直接聲明出來的變量,函數
3. 局部命名空間: 在函數內部聲明的變量和函數.
作用域:
1.全局作用域:內置+全局
2.局部作用域:局部
globals() 查看全局作用域中的名字
locals() 查看當前作用域中的名字
a = "123" # 全局
b = 36 # 全局
def func(): # 全局c = "馬化騰" # 局部def func2():print(c)a = 10
def func():a = 20print(a) # 就近原則print(globals()) # globals() 獲取到全局作用域(內置,全局)中的所有名字print(locals()) # locals() 查看當前作用域中的所有名字
func()
3. global和nonlocal
global: 把全局變量拿到局部來用.
nonlocal: 把離他最近的一層的變量拿過來.不會找全局
函數的嵌套
def chi():print("我要吃")print(chi())def func1():print("哈哈")def func2():func1()print("呵呵")func1()
func2()def func1():print("呵呵")def func2():print("哈哈")func2()print("吼吼")
func1() #def func1():print("趙")def func2():print("錢")def func3():print("孫")print("李")def func4():print("哈哈")func2()print("周")func2()
func1()def func():global a # a 不再是局部變量. 是全局變量a = 30 # 把全局中的a重新賦值成30print(a)
func()
print(a)a = 10
def func1():def func2():nonlocal a # 找局部作用域中 離他最近的那個變量引入進來a = 20print(a)func2()print(a)
func1()a = 1
def fun_1():a = 2def fun_2():def fun_3():nonlocal aa = 4print(a)print(a)fun_3()print(a)print(a)fun_2()print(a)
print(a)
fun_1()
print(a)
轉載于:https://www.cnblogs.com/duanpengpeng/p/9305177.html
總結
以上是生活随笔為你收集整理的动态参数与global和nonlocal的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。