python :函數的參數傳遞

函數的傳參(把數據給函數)
函數的形參(接收函數調用傳過來的數據)

python 函數的參數傳遞

傳遞方式:
	1. 位置傳參
    	1.1 序列傳參
	2. 關鍵字傳參
    	2.1 字典關鍵字傳參

**位置傳參:**
	實際參數(實參) 的對應關係與形式參數(形參)的對應關係是
	按位置來依次對應的.


說明:
	實參和形參通過位置進行傳遞和匹配
	實參的個數必須與形參的個數相同

序列傳參

	序列傳參是指在函數調用過程中,用*(星號) 將序列拆解後
按位置進行傳遞的傳參方式

說明:
	序列傳參時,序列拆解的位置將與形參一一對應

關鍵字傳參:

關鍵字傳參是指傳參時,按着形參名稱給形參賦值
實參和形參按名稱進行匹配

說明:
可以不按位置進行匹配

字典關鍵字傳參:

是指實參爲字典,將字典用** 拆解後進行關鍵字傳參的傳
遞方式

說明:
	字典的鍵名和形參名必須一致
	字典的鍵名必須爲符合標識符命名規則的字符串
	字典的鍵名要在形參中存在

函數的綜合傳參

1. 函數的傳參方式在能確定形參能唯一匹配到相應實參的情
	 況下可以任意組合
2. 函數的位置傳參要先於關鍵字傳參
  示例:
    def myfun(a, b, c):
        pass
    myfun(100, *[200, 300])
    myfun(100, *"BC")
    myfun(*"AB", 300)
    myfun(*[100], 200, *[300])
    myfun(100, c=300,b=200)
    myfun(a=100, 200, c=300)  # 錯誤的

    myfun(100, **{'c':300, 'b':200})
    myfun(100, **{'c':300}, b=200)
    myfun(100, b=200, **{'c':300})

-------- 以下講的內容是函數的形參-------

函數的缺省參數

語法:
	def 函數名(形參名1=默認實參1, 形參名2=默認實參2,
          	形參名3=默認實參3, .....)
作用:
	讓函數的調用者少傳遞參數來調用函數

說明:
	1. 缺省參數必須自右至左依次存在,如果一個參數有缺省
		參數, 則其右側的所有參數都必須有缺省參數
	2. 缺省參數可以有0個,1個或多個,甚至全部都有缺省參數
如:
    def fn(a, b=10, c): # 錯誤
        pass
    def fn(a=0, b=None, c=False):  # 是這對的
        pass
 **函數的可變實參和不可變實參的傳遞**
說明:
	當一個可變對象通過函數實參傳入函數內時,在函數內
	可以通過局部變量來操作可變對象(列表,字典,集合...)

函數形參的定義方式

位置形參
星號元組形參
命名關鍵字形參
雙星號字典形參

位置形參:
語法:
	def 函數名(形參變量1, 形參變量2, ....):
    	語句塊

星號元組形參
語法:
	def 函數名( * 元組形參名):
    	語句塊
作用:
	收集多餘的位置傳參
說明:
	元組形參名一般命名爲'args'
	 * 元組形參一個函數只能有一個

命名關鍵字形參

語法
	def 函數名(*,命名關鍵字形參1, 命名關鍵字形參2,..):
    	語句塊
	或
	def 函數名(*args,命名關鍵字形參1, 命名關鍵字形參2,..):
    	語句塊

作用:
	強制所有的命名關鍵字形參都必須用關鍵字傳參或字典關
	鍵字傳參

雙星號字典形參

語法:
	def 函數名(**字典形參名):
    	語句塊
作用:
	收集多餘的關鍵字傳參
說明:
	字典形參名一般命名爲'kwargs'
	一個函數內字典形參最多隻有一個



函數的形參說明:
	位置形參,缺省參數,星號元組形參,雙星號字典形參可以混
合使用

函數形參自左至右的定義順序爲:
位置形參
星號元組形參
命名關鍵字形參
雙星號字典形參

函數的不定長參數:
有兩種: 星號元組形參,雙星號字典形參
用不定長參數可以接收任意的傳參

  如:
    def fn(*args, **kwargs):
        print(args, kwargs)

全局變量和局部變量

**局部變量**
	1. 定義在函數內部的變量稱爲局部變量(函數的形參也是
   		局部變量)
	2. 局部變量只能在函數內部使用
	3. 局部變量在函數調用時才能創建,在函數調用之後會
   		自動銷燬
**全局變量**
	1. 定義在函數外部,模塊內部的變量稱爲全局變量
	2. 全局變量所有的函數都可以直接訪問(但函數內部不能將
   		其直接賦值)
說明:
	函數內部賦值語句不會對全局變量造成影響
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章