Python tutorial閱讀之函數的定義與使用
阿新 • • 發佈:2018-02-14
都是 傳遞對象 不可變對象 com 引用 lob 語句 mark 方式
函數的定義
Python 使用關鍵字def定義函數,格式與C語言類似,但是沒有返回類型,參數也不需要設置類型。
def add(a, b):
"""這是函數的文檔字符串"""
return a + b
def append(data):
data.append(a) #如果data為可變對象時候,例如List、Dict,則會改變實參的值
函數調用 會為函數局部變量生成一個新的符號表。確切的說,所有函數中的變量賦值都是將值存儲在局部符號表。變量引用首先在局部符號表中查找,然後是包含函數的局部符號表,然後是全局符號表,最後是內置名字表。因此,全局變量不能在函數中直接賦值(除非用 global 語句命名),盡管他們可以被引用。
Python參數傳遞采用的肯定是“傳對象引用”的方式。這種方式相當於傳值和傳引用的一種綜合。如果函數收到的是一個可變對象(比如字典或者列表)的引用,就能修改對象的原始值--相當於通過“傳引用”來傳遞對象。如果函數收到的是一個不可變對象(比如數字、字符或者元組)的引用,就不能直接修改原始對象--相當於通過“傳值‘來傳遞對象。
參數
默認參數: 為參數設定默認值,調用函數時,如果沒有值即使用默認值。
def login(username,password = "123"): """登錄函數""" pass login("admin") login("admin","password") def f(a, L=[]): L.append(a) return L print(f(1)) print(f(2)) print(f(3)) # 輸出結果 [1] [1, 2] [1, 2, 3] >>> def f(x = []): ... x.append(1) ... print(id(x)) ... >>> f() 140693834878408 >>> f() 140693834878408 >>> f() 140693834878408 >>>
關鍵字參數調用:即指定形式key = value來調用函數,關鍵字參數應該在位置參數後面。
def parrot(voltage, state=‘a stiff‘, action=‘voom‘, type=‘Norwegian Blue‘): print("-- This parrot wouldn‘t", action, end=‘ ‘) print("if you put", voltage, "volts through it.") print("-- Lovely plumage, the", type) print("-- It‘s", state, "!") # 以下調用均是錯誤的 parrot() # 必須參數沒有 parrot(voltage=5.0, ‘dead‘) # 關鍵字參數必須在位置參數之後 parrot(110, voltage=220) # **任何參數都不可以多次賦值** parrot(actor=‘John Cleese‘) # 不存在該參數名
Python tutorial閱讀之函數的定義與使用