1、函數的定義和調用
<code>def function(x,y):
\t\t\treturn x+y/<code>
- def #是定義函數的關鍵字
- function #是函數名
- (x,y) #括號內為參數
- return #通過return返回值,把值賦給變量
- 擴展知識點:print只是普通的打印但是不能賦值變量
- 通過定義函數,再次調用函數可以實現代碼的複用
2、函數參數
<code>def funtion(x,y=10,*args,**kwargs):
\t\t\tpass #pass暫時不進行任何操作/<code>
- Python中函數主要有這三種參數:
- (1)必備參數(x):調用時必須傳入
- (2)默認參數(y=10) :調用時可以不傳入,不傳入時默認使用默認值
- (3)不定長參數(*args、**kwargs):可以傳入也可以不傳入,不傳入時默認為空元祖和空字典
- 其中不定長參數有:元組和字典兩種類型,字典傳入是,必須是鍵值對的形式,且只能最後傳入,定義時也只能放在最後面
- None 空值
- 拆包:類似於元組拆包,在傳入時也可以通過解包傳入不定長參數
3、函數的作用域
- 全局變量、局部變量
- 函數不會改變傳入的不可變對象的值!
- 函數內部定義的變量在函數外部不可以使用,是局部變量
- global 是全局變量聲明,聲 明之後可以在全局使用,這裡的全局指的是當前py文件中。
- 注意:函數內外名字要一致,否則就是一個新變量
- nonlocal 是聲明局部變量(嵌套函數中使用)
- 閉包:把內部函數和外部變量都稱為閉包
- 閉包作用:可以在外部修改函數內部的變量值,是函數內部與外界溝通的橋樑
4、遞歸函數和匿名函數
- 遞歸函數:函數內部調用函數自己本身,和while循環類似,也需要一個結束條件,否則超出遞歸深度就會報錯。例如:
<code>def recursion(n):
if n<=1:
return 1
else:
return n *recursion(n-1)/<code>
- 匿名函數:就是沒有函數名的函數,主要用來定義那種不是特別複雜的函數,常用於函數的參數中。
- 例如:
<code>g = lambda x : x+1
li.sort(key=lambda x: str(x)) #li是一個列表,key參數是可以接受函數的,所以可以直接寫成匿名函數/<code>
- filter() 內置函數 過濾器
- filter(函數,需要過濾的元素等) 如:list(filter(lambda x:x>5,li)) #過濾列表li裡大於5的元素
- map 統一對元素進行操作 如: list(map(lambda x : x*10,li)) #將列表li裡的元素都進行乘以10的操作
- zip 統一配對的內置函數 zip(tu,li) #tu是一個元組,li是一個列表,將其組成一個字典
- 回調函數 把一個函數體當做參數傳遞給另一個函數去使用
<code>def func(f):
\t\t\tf()
print('調用了了另外一個函數')
def play():
print('函數使用')
func(play) #調用play函數/<code>
閱讀更多 槑孨 的文章