首先宣告,本人是堅定的唯物主義者,事情要從前兩天python之父的一篇twitter說起。
從理論上來說,結果應該是1, 1
對不對,但是聰明的你肯定想到事情沒那麼簡單。
以下是實際運**況,各位可以自己嘗試下。
x =
0y =
0deff(
):x =
1 y =
1classc:
print
(x, y)
x =2f(
)# ------------------------------------------
# result
01
我們都知道,**是逐行執行的,此段**比較簡單,理論結果就應該是1 1
,事實上,如果你把x = 2
注釋掉,結果是符合預期的。
與此同時我們也應該明白,此結果的出現不單單是x = 2
的影響,而應該是x = 2
和class c
的共同作用。
x =
0y =
0deff(
):x =
1 y =
1classc:
print
(x, y)
# x = 2f()
# ------------------------------------------
# result
11
為什麼加了x = 2
,結果就出現了不同?嚴格意義上來講這是錯誤的不應該發生。按照python之父的說法,這個現象在python3.9上依然存在(我執行的環境是python3.7).
這涉及到作用域和命名空間的概念:
簡單來說,x = 0, y = 0
屬於全域性變數,
f()函式裡的x, y屬於區域性變數,
class c中的x屬於區域性變數,
如果沒有x = 2
, x將繼承f()函式裡的x, y屬於區域性變數值,有了x = 2
後,在**執行到class c的地方,
發現類裡面有x的值,但是在列印前沒有定義,所以它會去找全域性變數替代。
所以最終的列印結果是0, 1
.
如果你再加個y = 2
最終的列印結果是0, 0
.
正所謂:遇事不決,量子力學;解釋不通,穿梭時空。
但是真的有玄學嗎?
是不是可以這麼理解,玄學只是還未被解釋的科學,科學是已經被證偽或者證實的玄學。
比如天狗食日,這一無比普通的天文現象,在古代可是了不得的大事。
所以說科學的盡頭是玄學未嘗不可,因為還有很多科學無法解釋的事情。比如外星文明,科學尚無定論,但是玄學可以一通亂扯走在科學前面,等到科學可以證明的時候,再來分辨對錯。
人工智慧的盡頭是人工?
人工智慧的盡頭是人工?除了定期上街執勤需要外,乙個深層次的原因是,人工智慧並不能百分之百包打天下。更極端情況下,人工智慧的盡頭可能是人工。何出此言呢?其一原因是人工智慧演算法的評價準則。這裡談論兩個指標,漏檢率和誤報率。第乙個指標,漏檢率是指本應發現卻未被演算法發現的問題,俗稱假陰性。以交通違章為例...
程式設計是美麗的
漂亮的桌面,美麗的弧線,各種各樣的色彩 圖形,構成了所看到的場景。程式設計不是呆板的,是一件很cool很有意義的事情。是一件很漂亮的事情,是可以使世界變得更好的事情。當用手機的時候,有沒有想過上面的字型是多麼簡潔 漂亮,有沒有想過上面的圖示是用多麼美麗的曲線構成?那透明的效果,那不同的圖案,不僅僅是...
程式設計重要的是掌握程式設計思想
求最大值 求和 變數交還這三類是最近遇到的對於掌握核心思想非常重要的程式設計題目,三種型別的題目分別代表了三種思想,這三種思想都是非常重要的思想,一定要掌握這三種型別程式設計題的思想核心而不是僅僅記住這三種型別程式設計題目的 對我們而言是最重要的。求最大值 如果是三個數求最大值,我們還可以使用if ...