這篇文章帶給大家的內容是關於Python中函數的全面總結(附實例),有一定的參考價值,有需要的朋友可以參考一下,希望對你有所幫助。
一.形參的動態參數: 動態參數,用於參數不確定時用.
格式:
def fun (*args) fun(args)
1. 動態接收位置參數:動態參數必須在位置參數後.
列子1.假如參數不確定時,如下的列子,每人飯量不一樣,吃的種類不一樣,此時用到動態傳參.
def fun(*food): #*表示的是不定参数,可以传递任意个信息,参数名称还是food,且接收到的信息为元祖() print("我要吃",food) fun("米饭") #*表示位置参数的动态传参 结果为我要吃 ('米饭',) fun("一锅米饭","一箱辣条","一桶方便面","可口可乐")#我要吃 ('一锅米饭', '一箱辣条', '一桶方便面', '可口可乐') fun ("一碗米饭","辣条","雪碧") #结果为我要吃 ('一碗米饭', '辣条', '雪碧')
列子2.
def fun (*food,a,b): print("我要吃",food,a,b) fun("苹果","梨子","香蕉") #此时程序会报错,全被food接收了,a和b永远接收不到参数. def fun (a,b,*food): print("我要吃",a,b,food) fun("苹果","梨子","香蕉","橘子") #我要吃 苹果 梨子 ('香蕉', '橘子')
2.有預設值參數時:順序: 位置參數, 動態參數*, 默認值參數
def chi(a, b, *food, c="娃哈哈"): print(a, b, food, c) chi("香蕉", "菠萝") #香蕉 菠萝 () 娃哈哈 默认值生效 chi("香蕉", "菠萝", "葫芦娃") #香蕉 菠萝 ('葫芦娃',) 娃哈哈 默认值生效 chi("香蕉", "菠萝", "葫芦娃", "口罩") # 香蕉 菠萝 ('葫芦娃', '口罩') 娃哈哈 默认值生效 chi("香蕉", "菠萝", "葫芦娃", "口罩",c="苹果")#香蕉 菠萝 ('葫芦娃', '口罩') 苹果
這時候我們發現所有的預設值都生效. 這時候如果不給關鍵字傳參. 那麼你的預設值是永遠都生效的.
3.動態接收關鍵字參數: 最終順序(*): 位置參數> *args > 預設值參數> **kwargs
1.在python中可以動態的位置參數, 但是*這種情況只能接收位置參數,無法接收關鍵字參數. 在python中使⽤**來接收動態關鍵字參數.(形參只有位置參數和預設值參數兩種類型)
*args 位置參數接收到的是元組
##**kwargs 關鍵字的動態傳參, 接收到的是字典例如
def func(**kwargs): # key word arguments print(kwargs) #{'a': 10, 'b': 20, 'jay': '周杰伦', 'jj': '林俊杰'} func(a=10, b=20, jay="周杰伦", jj="林俊杰")
def fun(*args, **kwargs): print(args, kwargs) fun("3","2",a="hello") #('3', '2') {'a': 'hello'}
1
在實參位置* 表示打散,打散的是可迭代物件例如列表和字串等.在形參上表示的是聚合.def func(*args): # 在這裡. 其實相當於把傳進來的參數做了一次聚合, 聚合成一個元組
print(args)
lst = "娃哈哈"
func(*lst) # 在實參位置* 表示打散, 打散的是可迭代物件
2.在實參位置** 打散的是字典
def func(**kwargs): # ** 把接收到的關鍵字參數打包(聚合)成字典
print(kwargs) # 一定是字典
dic = {"張無忌": "明教教主", "謝遜": "金毛獅王", "範瑤": "光明右使"}
func(張無忌=dic['張無忌'] , 謝遜=dic['謝遜'], 範瑤=dic['範瑤'])
func(**dic) # 這裡的** 是把字典打散. 字典的key作為參數的名字, 字典的值作為參數的值傳遞給形參 兩個結果一樣都為{'張無忌': '明教教主', '謝遜': '金毛獅王', '範瑤': '光明右使'}
二.命名空間:
def fun(): a=10 fun() print(a) #a 此时不存在
1.命名空間分類:
1. 全域命名空間--> 我們直接在py檔中, 函數外宣告的變數都屬於全域命名空間
2.局部命名空間--> 在函數中聲明的變數會放在局部命名空間
3. 內建命名空間--> 存放python解釋器為我們提供的名字, list, tuple, str, int這些都是內建命名空間
2.載入順序:
1. 內建命名空間2. 全域命名空間3. 局部命名空間(函數被執行的時候)
3.取值順序:
1. 局部命名空間2. 全域命名空間3. 內建命名空間
三.作用域就是作用範圍, 依生效範圍來看分為全域作域與局部作用域
全域作用域: 包含內建命名空間和全域命名空間. 在整個檔案的任何位置都可以使用(遵循從上到下逐行執行).
局部作用域: 在函數內部可以使用.
作用域命名空間:
1. 全域作用域: 全域命名空間內建命名空間
2. 局部作用域: 局部命名空間
我們可以透過
globals()函數來查看全域作用域中的內容, 也可以透過locals()來查看局部作用域中的變數和函數資訊. locals()查看的是目前作用域中的內容
def fun(): a=10 print(locals()) #{'a': 10} fun() print(globals()) #显示的没有a的信息 print(locals()) #此时和globals一样,显示的没有a的信息,因为他显示的是当前作用域中的内容.
四.函數的巢狀主要用到兩個函數,
global 和nonlocal
nonlocal: 在局部, 引入離他最近的那一層的變數,不能再第一層函數將全域的變數引進來.
PHP中的字串處理函數(String Functions) 全總結
#
以上是Python中函數的全面總結(附實例)的詳細內容。更多資訊請關注PHP中文網其他相關文章!