在python中,函式引數的工作方式其實很簡單。當你編寫func(a,b,c,d=some,e=value)時,位置和關鍵字引數其實分別是被打包成元組和字典的。函式實際接收到的是乙個元組args和乙個字典kwargs,並在內部完成如下轉換:
a,b,c=args
d=kwargs.get('d',d_default_value)
e=kwargs.get('e',e_default_value)
這一切都是在幕後悄悄發生的。當然,它還會執行一些錯誤檢查,還允許你將位置引數當成關鍵字引數那樣進行指定(即使它們在函式定義中並不是關鍵字引數)。
def say_hello_then_call_f(f,*args,**kwargs):
print("args is: ",args)
print("kwargs is: ",kwargs)
print("hello! now i'm going to call %s"%f)
return f(*args,**kwargs)
def g(x,y,z=1):
return (x+y)/z
print(say_hello_then_call_f(g,1,2,z=5.))
然後,如果我們通過呼叫g,就會得到:
args is: (1, 2)
kwargs is:
hello! now i'm going to call 0.6
*args和**kwargs不僅可以在函式定義中使用,還可以在函式呼叫中使用。在呼叫時使用就相當於pack(打包)和unpack(解包),類似於元組的打包和解包。
def demo(a,b,c,d):
print(a,b,c,d)
demo(1,*(2,3),**)
#output
#1 2 3 4
Python基礎 函式 函式引數
引數就是傳入的值 示例 usr bin env python3 coding utf 8 函式的引數和預設引數 defregist name,age,city shenzhen print name name print age age print city city 執行結果 d pythonpr...
Python基礎(函式引數)
1.必選引數parameter def detail1 name,age,tel print 姓名 name print 年齡 age print tel detail1 qiye 12 123456 2.預設引數parameter value def detail2 name,age,tel,ge...
Python基礎之函式的引數
在學習python過程中感謝廖雪峰的 def 函式名 引數1 引數2 引數3.函式體 returnpython函式的建立非常簡單,但是靈活度卻非常大。因此寫下此篇文章用於鞏固學習。首先我們定義乙個求乙個數的平方 def getresult x return x x此時引數x 即為位置引數,當我們呼叫...