Python中方法的缺省參數(shù)問題解讀
Python 中方法的缺省參數(shù)問題
在Python中可以缺省給方法制定缺省值,但是這個(gè)缺省值在某些情況下確是和我們預(yù)期不太一致的…..。 這個(gè)詭異的問題,曾經(jīng)困然了我?guī)滋鞎r(shí)間,才最終定位出來(lái)…..
測(cè)試代碼
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()
預(yù)期代碼分析
第一次預(yù)計(jì)其應(yīng)該打印出不同的時(shí)間戳,因?yàn)閐atetime.now()每次的調(diào)用都會(huì)生成當(dāng)前的時(shí)間點(diǎn)。 但是實(shí)際情況確實(shí)和這個(gè)不一樣的….
直接上結(jié)果:
從輸出的結(jié)果信息來(lái)看,每一次都是輸出了相同的時(shí)間戳……..
小結(jié):從結(jié)果來(lái)看,函數(shù)的反復(fù)調(diào)用中,只會(huì)反復(fù)使用第一次調(diào)用之時(shí)生成的那個(gè)缺省值,這個(gè)是我們?cè)谑褂梅椒ǖ娜笔≈抵畷r(shí)需要注意的問題。
Python 缺省參數(shù) 不定長(zhǎng)參數(shù)
python 缺省參數(shù)
# 缺省參數(shù) # 1. 在定義函數(shù)的時(shí)候,給我們形參一個(gè)默認(rèn)的數(shù)據(jù),那這個(gè)形參就是缺省參數(shù) # 2. 調(diào)用的時(shí)候,給缺省參傳遞參數(shù)默認(rèn)值,使用的是傳遞的值 # 3. 在調(diào)用的時(shí)候,可以不傳遞數(shù)據(jù)值,那么使用的為默認(rèn)值 def show_info(name="我家小丁永遠(yuǎn)",age= 18) ?? ? print(name,age) # 如果不給缺省參數(shù)賦值,那么輸出的值就為"我家小丁永遠(yuǎn) 18" show_info() # 如果給缺省參數(shù)賦值,那么輸入的結(jié)果為你所賦的值 show_info("我今年馬上",20)
不定長(zhǎng)參數(shù)
# 不定長(zhǎng)參數(shù) ?(*args ? *kwargs) # ?*args ?,args可以寫成其他變量如:a, b, c.但是建議使用args? # *args是元祖類型(a, b, c), 最直接的特點(diǎn)就是: 可以使用 for in 遍歷 # *args 不定長(zhǎng)參數(shù),可以接受位置傳參 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("好好學(xué)習(xí)") show_info("天天向上")
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
超級(jí)實(shí)用的8個(gè)Python列表技巧
這篇文章主要介紹了實(shí)用的8個(gè)Python列表技巧,幫助大家更好的理解和學(xué)習(xí)python列表的知識(shí),感興趣的朋友可以了解下2020-08-08使用PyCharm配合部署Python的Django框架的配置紀(jì)實(shí)
這篇文章主要介紹了使用PyCharm配合部署Python的Django框架的配置紀(jì)實(shí),PyCharm是一款強(qiáng)大的Python的IDE,需要的朋友可以參考下2015-11-11PyQt5 關(guān)于Qt Designer的初步應(yīng)用和打包過程詳解
Qt Designer中的操作方式十分靈活,其通過拖拽的方式放置控件可以隨時(shí)查看控件效果。這篇文章主要介紹了PyQt5 關(guān)于Qt Designer的初步應(yīng)用和打包,需要的朋友可以參考下2021-09-09PyTorch中view()與?reshape()的區(qū)別詳析
這篇文章主要給大家介紹了關(guān)于PyTorch中view()?與?reshape()?區(qū)別的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2022-01-01matplotlib繪圖實(shí)例演示標(biāo)記路徑
這篇文章主要介紹了matplotlib繪圖實(shí)例演示標(biāo)記路徑,分享了相關(guān)代碼示例,小編覺得還是挺不錯(cuò)的,具有一定借鑒價(jià)值,需要的朋友可以參考下2018-01-01