學習筆記Python篇~函數

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>


分享到:


相關文章: