Python中方法的缺省參數問題解讀
Python 中方法的缺省參數問題
在Python中可以缺省給方法制定缺省值,但是這個缺省值在某些情況下確是和我們預期不太一致的…..。 這個詭異的問題,曾經困然瞭我幾天時間,才最終定位出來…..
測試代碼
from datetime import datetime import time
def test(curdate=datetime.now()): print(“The current Time:%s” % curdate.strftime(“%Y-%m-%d %H:%M:%S”)) for i in range(0,10): time.sleep(2) test()
預期代碼分析
第一次預計其應該打印出不同的時間戳,因為datetime.now()每次的調用都會生成當前的時間點。 但是實際情況確實和這個不一樣的….
直接上結果:
從輸出的結果信息來看,每一次都是輸出瞭相同的時間戳……..
小結:從結果來看,函數的反復調用中,隻會反復使用第一次調用之時生成的那個缺省值,這個是我們在使用方法的缺省值之時需要註意的問題。
Python 缺省參數 不定長參數
python 缺省參數
# 缺省參數 # 1. 在定義函數的時候,給我們形參一個默認的數據,那這個形參就是缺省參數 # 2. 調用的時候,給缺省參傳遞參數默認值,使用的是傳遞的值 # 3. 在調用的時候,可以不傳遞數據值,那麼使用的為默認值 def show_info(name="我傢小丁永遠",age= 18) print(name,age) # 如果不給缺省參數賦值,那麼輸出的值就為"我傢小丁永遠 18" show_info() # 如果給缺省參數賦值,那麼輸入的結果為你所賦的值 show_info("我今年馬上",20)
不定長參數
# 不定長參數 (*args *kwargs) # *args ,args可以寫成其他變量如:a, b, c.但是建議使用args # *args是元祖類型(a, b, c), 最直接的特點就是: 可以使用 for in 遍歷 # *args 不定長參數,可以接受位置傳參 def show_info(*args) for i in args: print(i, "人生苦短,我用python", end=" ") print() show_info(2)
# 接上 另外一種寫法 def show_info(*args) print("人生苦短,我用Python", *args) show_info("好好學習") show_info("天天向上")
總結
以上為個人經驗,希望能給大傢一個參考,也希望大傢多多支持WalkonNet。