国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

詳細(xì)介紹Python函數(shù)中的默認(rèn)參數(shù)

2020-02-23 00:26:55
字體:
供稿:網(wǎng)友
import datetime as dt def log_time(message, time=None):  if time is None:    time=dt.datetime.now()  print("{0}: {1}".format(time.isoformat(), message))

最近我在一段Python代碼中發(fā)現(xiàn)了一個因?yàn)殄e誤的使用默認(rèn)參數(shù)而產(chǎn)生的非常惡心的bug。如果您已經(jīng)知道關(guān)于默認(rèn)參數(shù)的全部內(nèi)容了,只是想嘲笑一下我這可笑的錯誤,請直接跳到本文末尾。哎,這段代碼是我寫的,但是我非常確定那天我被惡魔附體了。你懂的,有時候就是這樣。

本文僅僅是總結(jié)一下關(guān)于Python函數(shù)的標(biāo)準(zhǔn)參數(shù)和默認(rèn)參數(shù)的一些基本內(nèi)容。提醒你注意你的代碼中可能存在的陷阱。如果你剛開始接觸Python,開始寫一些函數(shù),我真心推薦你看一下Python官方手冊中關(guān)于函數(shù)的內(nèi)容,鏈接如下:Defining Functions 以及 More on Defining Functions。
簡單復(fù)習(xí)一下函數(shù)

Python是一個強(qiáng)大的面向?qū)ο笳Z言,它把這種編程范式推向了頂峰。但是,面向?qū)ο缶幊倘匀恍枰揽亢瘮?shù)這一概念,你可以用它來處理數(shù)據(jù)。Python對于可調(diào)用對象有一個更寬泛的概念,即任何對象都可以被調(diào)用,調(diào)用的意思是對其應(yīng)用數(shù)據(jù)。

函數(shù)在Python中是可調(diào)用對象,并且乍一看,它和其他語言中的函數(shù)有著類似的行為。它們獲取一些數(shù)據(jù),這些數(shù)據(jù)被稱為參數(shù),然后處理它們,接著返回結(jié)果(如果沒有return語句則是None)

參數(shù)被聲明為占位符(在定義函數(shù)的時候),用以代表那些當(dāng)函數(shù)調(diào)用時被實(shí)際傳入的對象。在Python中你不需要聲明參數(shù)的類型(例如,像你在C或Java中做的那樣)因?yàn)镻ython哲學(xué)依賴于多態(tài)。

記住,Python的變量是引用,即實(shí)際變量的內(nèi)存地址。這意味著Python的函數(shù)永遠(yuǎn)以“傳址”的方式工作(這里使用了一個C/C++術(shù)語),當(dāng)你調(diào)用一個函數(shù)的時候,并不是復(fù)制了一份參數(shù)的值來替換占位符,而是把占位符指向了變量本身。這導(dǎo)致了一個非常重要的結(jié)果:你可以在函數(shù)內(nèi)部改變這個變量的值。這里有一個很好可視化講解,關(guān)于引用機(jī)制。

引用在Python扮演著非常重要的角色,它是Python完全多態(tài)方式的骨干。關(guān)于這個非常重要的主題,請點(diǎn)擊這個鏈接 查看更好的解釋。

為了檢查你是否理解了這門語言的這一基本特性,請跟隨這段簡單的代碼(變量ph代表的是“占位符(placeholder)”)
 

>>> def print_id(ph):... print(hex(id(ph)))...>>> a = 5>>> print(hex(id(a)))0x84ab460>>> print_id(a)0x84ab460>>>>>> def alter_value(ph):... ph = ph + 1... return ph...>>> b = alter_value(a)>>> b6>>> a5>>> hex(id(a))'0x84ab460'>>> hex(id(b))'0x84ab470'>>>>>> def alter_value(ph):... ph.append(1)... return ph...>>> a = [1,2,3]>>> b = alter_value(a)>>> a[1, 2, 3, 1]>>> b[1, 2, 3, 1]>>> hex(id(a))'0xb701f72c'>>> hex(id(b))'0xb701f72c'>>>            
發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 瑞昌市| 石门县| 嘉鱼县| 呼图壁县| 石嘴山市| 桂阳县| 罗定市| 洞口县| 福清市| 原平市| 西昌市| 凭祥市| 建瓯市| 昌宁县| 额尔古纳市| 旺苍县| 延吉市| 白水县| 陈巴尔虎旗| 连江县| 山东省| 富民县| 正镶白旗| 鄂州市| 樟树市| 石渠县| 茂名市| 韶山市| 洛隆县| 华蓥市| 德州市| 鸡东县| 西和县| 衡山县| 屏山县| 永登县| 库尔勒市| 绥芬河市| 新民市| 化隆| 大荔县|