1. 程式人生 > >chapter4.1、函數,參數

chapter4.1、函數,參數

ble round 一個 class 小括號 理解 python函數 int 定義

函數

y = f(x)  y是x的函數,x自變量

python函數

  由若幹的語句塊,函數名稱,參數列表構成,是組織代碼的最小單元

  作用是完成一定的功能

函數的作用

  結構化編程的最基本封裝,一般按照功能組織代碼

  封裝為了復用,減少冗余代碼

  代碼簡潔美觀,可讀易懂

def語句定義函數

def 函數名(參數列表)   <--參數列表不是列表  

  函數體(代碼塊)

  [return 返回值]
    函數名就是標識符,命名要求一樣

    語句塊縮進 四個空格

    python的函數沒有return語句,返回None

    定義的參數列表為形式參數,只是符號表達,簡稱形參,相當於占位符

調用

  函數定義,只是聲明函數,需調用才能執行

  調用的方式,就是函數加上小括號,括號內寫參數

  調用的參數是實際參數,和形參位數相同

  返回值也是值,None也是值,返回值可以用變量接收

  定義要在調用前,否則NameError異常

  callable測試是否是函數,測試時不要在函數名後加括號

  print返回None,打印打印的話會返回None

函數的調用,輸入參數時,動態語言的缺點,不能指定類型,除了程序解決,沒有語法上的解決方案。

位置參數,一一對應,按照參數定義順序傳入

  def f(x,y,z) 調用使用 f(1,3,5)  按照定義順序傳入參數

關鍵字參數,使用形參的名字傳參,可以與定義順序不同

  def f(x,y,z) 調用使用 f(x=1,y=3,z=5)  

傳參

  f(z=None,y=10,x=[1])    f((1,),z=6,y=4.1)    

實參:位置參數要在關鍵字參數之前,位置參數按位置對應

形參:非缺省參數要在缺省參數之前

參數默認值,缺省值

定義時,在形參後跟上一個值

作用

參數的默認值可以在未傳入足夠的實參時,對未定義的參數賦值為默認值

簡化函數調用

可變參數

def add(nums):
    sum = 0
    for i in nums:
        sum += i
    return sum

傳入可叠代對象,叠代元素求和

一個形參可以匹配任意個參數

*可變位置參數,可以接收多個實參

  使用*封裝成元組返回,收集的實參為一個tuple

  空的返回空元組

**可變關鍵字參數

  使用**符號,表示接受多個關鍵字參數

  收集到的值和名稱封裝成字典dict

空的收集空字典


位置參數後放可變位置參數,再放keyword-only參數,最後邊只能放可變關鍵字參數

keyword-only參數,只能通過關鍵字傳參

  在位置可變參數之後,出現參數,就不能在理解為位置參數,要理解為關鍵字參數

**kwargs只能在最後的位置

fn(*args,x,y),表示x,y是keyword-only參數,前邊收位置參數

fn(*,x,y) 表示只要keyword-only參數,必須有

參數列表的一般順序是,普通參數,缺省參數,可變位置參數,keyword-only參數(可帶缺省值),可變關鍵字參數

def fn (x,y,z=3,*arg,m=4,n,**kwargs)

註意

代碼應該易讀易懂,按照書寫習慣定義函數參數

解構

fn(*[4,5])  fn(*{4,5})  fn(*(4,5))

  解開是fn(4,5)

  *參數解構成位置參數,可以解開一層的結構,列表,元組,集合,字符串,字節,可以解開可叠代對象(range等)

add(**{‘x‘:2,‘y‘:4})

  解開的參數是add(x=2,y=4)

  **解開兩層,解開字典構成關鍵字參數,產生的鍵值對組成的元組。二維結構,返回兩層。

可變位置參數和參數解構要分清

chapter4.1、函數,參數