網(wǎng)站首頁 編程語言 正文
Python 中方法的缺省參數(shù)問題
在Python中可以缺省給方法制定缺省值,但是這個(gè)缺省值在某些情況下確是和我們預(yù)期不太一致的…..。 這個(gè)詭異的問題,曾經(jīng)困然了我?guī)滋鞎r(shí)間,才最終定位出來…..
測試代碼
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é)果信息來看,每一次都是輸出了相同的時(shí)間戳……..
小結(jié):從結(jié)果來看,函數(shù)的反復(fù)調(diào)用中,只會(huì)反復(fù)使用第一次調(diào)用之時(shí)生成的那個(gè)缺省值,這個(gè)是我們在使用方法的缺省值之時(shí)需要注意的問題。
Python 缺省參數(shù) 不定長參數(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)
不定長參數(shù)
# 不定長參數(shù) ?(*args ? *kwargs)
# ?*args ?,args可以寫成其他變量如:a, b, c.但是建議使用args?
# *args是元祖類型(a, b, c), 最直接的特點(diǎn)就是: 可以使用 for in 遍歷
# *args 不定長參數(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é)
原文鏈接:https://blade.blog.csdn.net/article/details/75103335
相關(guān)推薦
- 2022-06-16 Go基礎(chǔ)教程系列之defer、panic和recover詳解_Golang
- 2023-07-07 什么是 Spring 框架?使用 Spring 框架的好處是什么?Spring 框架中用到了哪些設(shè)計(jì)
- 2023-01-03 C語言中的putchar函數(shù)示例_C 語言
- 2022-09-08 pytorch實(shí)現(xiàn)加載保存查看checkpoint文件_python
- 2023-11-20 帶寬單位是什么?帶寬單位詳解?帶寬單位如何換算?
- 2022-04-01 Python?eval()?函數(shù)看這一篇就夠了_python
- 2022-09-13 C#?wpf使用ListBox實(shí)現(xiàn)尺子控件的示例代碼_C#教程
- 2021-12-05 密碼學(xué)之a(chǎn)pache部署https介紹_Linux
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細(xì)win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運(yùn)行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲(chǔ)小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運(yùn)算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認(rèn)證信息的處理
- Spring Security之認(rèn)證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯(cuò)誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實(shí)現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡單動(dòng)態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊(duì)列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠(yuǎn)程分支