day10 動態傳參
阿新 • • 發佈:2018-06-12
嵌套 尋找 pri true highlight 命名空間 麻辣燙 順序 fun
一動態傳參
1動態傳參,可以接受任意的參數
順序: 位置參數 *args 默認值 **kwargs
1位置參數的動態傳參 寫法*參數名 例如 *args 接受的參數是tuple
# def eat(*good): #動態傳參,可以接受多個實參 # print(good) # eat("可樂","麻辣燙","火鍋") # eat("麻辣燙") #接受的是元祖,括號裏面的元素每個用逗號隔開
2關鍵字參數的動態傳參, 寫法 ** 參數名 例如**keargs 接受的參數是dict類型
# def eat(**kwargs): #接受的是關鍵字參數,也可接受多個傳參 # print(kwargs) # eat(good="麻辣燙,蓋澆飯",fruit="蘋果",drink="七喜") #字典
3 無敵傳參
def fun(*args,**keargs):
pass
# def rat(*args,**kwargs):#接受的是位置參數跟關鍵字參數 # print(args,kwargs) # rat(1,6,65,95+9,a=6,n=6) #打印的是元祖加字典
*,**的作用:
在形參:聚合
def fun(**kwargs): #吧打散的在聚合 print(kwargs) dic={"a":[1,2,3],"b":2} fun(**dic) # 吧字典打散
二 作用域的問題
1.globals()獲取全局作用域的內容
2.locals()獲取局部作用域中的內容
# a = 10 # def func(): # global a # 這裏用的a是全局的 # a = 20 # print(a) # func() # print(a) # 20 a = 10 def func1(): a = 20 print(a) def fun2(): nonlocal a # 上一級, 且不能是全局 a = 30 print(a) fun2() print(a) func1() print(a)
三 函數嵌套-函數的執行流程
所有的()表示的是函數的調用
# def fun1(): # print(111) # # def fun2(): # print(222) # fun1() # # fun2() # print(333) # def fun2(): # print(222) # def fun3(): # print(666) # print(444) # fun3() # print(888) # # print(33) # fun2() # print(555) # def func(): # print("哈哈哈") # a = func # 函數可以賦值 .相當於. a和func是一回事兒 # func() # a()
四 global和nonlocal
1global:尋找全局作用域中的內容
# a = 10 # def func(): # global a # 這裏用的a是全局的 # a = 20 # print(a) # func() # print(a) # 20
2nonlocai:尋找上一級作用域中的內容,但不能是全局的
a = 10 def func1(): a = 20 print(a) def fun2(): nonlocal a # 上一級, 且不能是全局 a = 30 print(a) fun2() print(a) func1() print(a)
五額外追加的內容 命名空間
a = 10 # 全局 def func(): # 全局 a = 40 # 局部 b = 20 # 局部 def abc(): # 局部 d = 30 # 是局部 print("哈哈") print(a, b) # 這?使?的是局部作?域 print(locals()) abc() # print(globals()) # 打印全局作用域中的內容 # print(locals()) # 打印局部作用域中的內容,locals()打印當前這個函數局部作用與中的內容 func() print(globals()) # print(globals()) # 打印全局作用域中的內容
day10 動態傳參