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。

推薦閱讀: