的下面的代碼輸出是Python代碼評估順序?
5
3
我是新來的Python,可能有人向我解釋,爲什麼?
import sys
def Main():
str='1+2'
print eval(str)
class A:
def __init__(self):
self.x = 5
a = A()
print a.x
if __name__=="__main__":
Main()
的下面的代碼輸出是Python代碼評估順序?
5
3
我是新來的Python,可能有人向我解釋,爲什麼?
import sys
def Main():
str='1+2'
print eval(str)
class A:
def __init__(self):
self.x = 5
a = A()
print a.x
if __name__=="__main__":
Main()
Python代碼自上而下評估,而不是從Main()
評估。
解釋器看到a = A()
線第一,並打印a.x
等於5,則它檢查if
條件和打印eval(str)
這是3
。
因此,輸出,
5
3
謝謝,明白了! – mousepotato
小細節。實際上,我相信解釋者首先會看到「def」和「class」這兩行,然後解析這些主體並將結果存儲在變量中。儘管如此,它並沒有評估任何功能代碼。 – jpmc26
@ jpmc26:是的,你說得對。函數定義首先被評估,但是直到被調用時纔會被執行。 :) –
在一個側面說明,請參閱PEP8(Python的樣式規範),對函數的命名約定。 http://www.python.org/dev/peps/pep-0008/#function-names – pygeek