標籤:none sda 技術 沒有 png 技術分享 pre lob logs
1、三元運算
#1.三元運算利用已下方法就可以實現一步運算返回a b中大的值def my_max(a,b): c=0 a=int(input(‘請輸入‘)) b=int(input(‘請輸入‘)) # if a>b: # c=a # else: # c=b #或者這樣 c = a if a > b else b return cret=my_max(1,3)print(ret)
2.補充上節差的知識點
形參:
#位置參數
#預設參數(關鍵字參數)
#動態參數
*args:接收說有按照位置傳遞的參數,接收到的是參數是組成的元祖
*kwargs:接收說有按關鍵字傳遞的參數,接收到的是參數組成的字典
這次講的是動態參數
參數的排序 如果各種參數都在函數中使用,就要以以下的形式排序
def func3(a,b,c,*args,key=‘key‘,**kwargs):
#2.動態參數def func(a,b,c,*args,key="key"): #在參數前面加一個* 這個參數就變成了動態參數 print(a,b,c) #預設參數放在動態參數後邊 print(key) #參數 print(args)set=func(1,2,3,‘sd‘,11,22,33,key=‘aaa‘)
以下是傳回值# 1 2 3 #前邊這三個必須有,少一個都不能# aaa #返回的就是此次的正常結果# (‘sd‘, 11, 22, 33) 使用的時候,所有傳入的值都被組織成元祖的形式
#動態參數2 **kwargs的用法def func3(a,b,c,*args,key=‘key‘,**kwargs): print(a,b,c,) print(key) print(args) print(kwargs)set=func3(1,2,3,‘sdash‘,key=‘www‘,x=3,y=‘alex‘) #這裡最後的kwargs要注意不要寫成與以下是傳回值 #前邊的形參的關鍵字參數有重複 #如不能在後寫成a="alex"會報錯# 1 2 3# www# (‘sdash‘,)# {‘x‘: 3, ‘y‘: ‘alex‘} #kwargs這個傳入的值都會組織成字典的形式
View Code
#4魔性用法def func4(*args): print(args)li=[1,2,3,4,5]# func4(li) # 得到以下結果#([1, 2, 3, 4, 5],) 直接將列表傳遞到函數的話,他會直接弄成一個大的元祖func4(*li) #結果如下 在列表名前加一個*就是打散的意思,這樣可以一一是放在元祖中去#(1, 2, 3, 4, 5) 也有**dic的用法
3.命名空間
三種命名空間之間的載入與取值順序:
載入順序:內建命名空間(程式運行前載入)->全域命名空間(程式運行中:從上到下載入)->局部命名空間(程式運行中:調用時才載入)
取值:
在局部調用:局部命名空間->全域命名空間->內建命名空間
4.範圍
全域範圍
局部範圍
nonlocal的用法,和他的作用
n=2def func(): n=4 def func2(): nonlocal n #想要引用上一層的並改變他得值就得用nonlocal這個,如果只是引用不用nonlocal n n +=1 func2() print(n) #運行程式列印的是5 說明上一層的n=1在最下層被修改成功了func()
內層函數想要改變全域變數中的n的值的話就要用global 來引入全域變數
n=2def func(): n=4 def func2(): global n#想要引用全域變數的並改變他得值就得用這個,如果只是引用不用nonlocal n n +=1 func2() print(n) #運行程式列印的是4 說明上一層的n=4沒有被改變func()print(n) #運行結果還是3 說明只是改變了全域變數n=2的值
函數的嵌套
輸出的結果
輸出結果是 我是qqxing
day10 python學習 函數的嵌套命名空間範圍等