【趣谈】| 编程的尽头是玄学?
歡迎關注微信公眾號“Python小灶,和我一起每天學習Python新知識”
文章目錄
- 一篇twitter引發的大討論
- 背后到底發生了什么
- 編程的盡頭是玄學?
一篇twitter引發的大討論
首先聲明,本人是堅定的唯物主義者,事情要從前兩天Python之父的一篇twitter說起。
從理論上來說,結果應該是1, 1對不對,但是聰明的你肯定想到事情沒那么簡單。
以下是實際運行情況,各位可以自己嘗試下。
我們都知道,代碼是逐行執行的,此段代碼比較簡單,理論結果就應該是1 1,事實上,如果你把x = 2注釋掉,結果是符合預期的。
與此同時我們也應該明白,此結果的出現不單單是x = 2的影響,而應該是x = 2和class C的共同作用。
x = 0 y = 0def f():x = 1y = 1class C:print(x, y)# x = 2f()# ------------------------------------------ # result 1 1背后到底發生了什么
為什么加了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.
編程的盡頭是玄學?
正所謂:遇事不決,量子力學;解釋不通,穿梭時空。
但是真的有玄學嗎?
是不是可以這么理解,玄學只是還未被解釋的科學,科學是已經被證偽或者證實的玄學。
比如天狗食日,這一無比普通的天文現象,在古代可是了不得的大事。
所以說科學的盡頭是玄學未嘗不可,因為還有很多科學無法解釋的事情。比如外星文明,科學尚無定論,但是玄學可以一通亂扯走在科學前面,等到科學可以證明的時候,再來分辨對錯。
總結一句話:玄學是因為我們對事物的了解還不夠深刻而為了讓自己滿足于某種答案的一種自我心理安慰。
順便一提,這樣寫代碼是不規范和不推薦的,容易讓人產生困惑,僅供交流學習參考。
總結
以上是生活随笔為你收集整理的【趣谈】| 编程的尽头是玄学?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: EXP、IMP、EXPDP、IMPDP命
- 下一篇: Mes的理解