今天發現了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 ...