Python的乙個坑

2021-07-16 12:29:46 字數 688 閱讀 6478

今天發現了python乙個坑。

我們知道python中函式跟c++一樣,可以設定預設引數,比如:

def func(x, y=1):

print(x, y)

func(x=10)

>> 10 1

y有乙個預設值1,所以函式呼叫的結果是列印10 1

但是如果預設值是這樣的:

class food:

def __init__(self):

self.name = "banana"

def eat(name, food=food()):

print(name + " eat " + food.name + ": " + str(id(food)))

if __name__ == "__main__":

eat("kobe")

eat("james")

結果:

kobe eat banana: 38896200

james eat banana: 38896200

驚奇的發現呼叫了兩次eat函式,實參food竟然是同乙個(由id號相同看出),kobe和james吃的是同乙個香蕉,不敢想象。

這也說明我自己python姿勢水平還不夠,還需不斷修煉。

使用python的乙個小坑

今天進行乙個python 的小練習,因為是從頭開始練,第一次當然是運算子了,所以使用pycharm建立了乙個operator.py的檔案,前期沒什麼問題,但是到函式 這一點,需要匯入乙個類才行。發現出現了如下錯誤。各種對比發現沒有什麼不同。最終無奈的把錯誤貼到搜尋,雖然問題不同但是型別基本一樣。才發...

ImmersionBar的乙個坑

今天寫 時發現殺掉activitya 1後再啟動activitya 2時,因為activitya 2的immersionbar先初始化了,之後activitya 1的ondestroy才執行,而關鍵點是發現ondestroy中確實是需要殺掉的activitya 1,而immersionbar也不是單...

isinstance的乙個坑

在使用unittest的時候,用到了assertisinstance方法,該方法呼叫了isinstance方法,現有兩個檔案中的兩個類 test c a.py classa pass test c b.py from a import a class b a pass其中目錄結構如下 test c ...