2014-04-21 33 views
1

我在學習python。我發現了一個問題,說這個正確:如何在python中使用assert和==?

def main(): 
    assert ___ == type("Hello World").__name__ 
    assert ___ == isinstance("Hello World", str) 
if __name__=="__main__": 
    main() 

我想:

__some__={} 
def main(): 
    assert __some__ == type("Hello World").__name__ 
    assert __some__ == isinstance("Hello World", str) 
if __name__=="__main__": 
    main() 

當我運行此,我越來越AssertionError

Traceback (most recent call last): 
    Line 6, in <module> 
    main() 
    Line 3, in main 
    assert __some__ == type("Hello World").__name__ 
AssertionError 

我發現assert用於指定一個條件,並在該條件失敗時引發異常。我什至使用蟒蛇導師,但如果我把assert somevariable我得到斷言錯誤。我無法理解如何使用==並斷言完成某些任務。

+0

執行該代碼會產生'NameError:name'__'未定義'。這不是斷言失敗。你需要聲明一個明確定義的表達式。 – user3553031

+0

@ user3553031我宣佈了一個變量,並保留在那個地方,我得到斷言錯誤 – saimadan

+0

在這種情況下,請向我們顯示確切的代碼是失敗的,確切的錯誤,你會得到。 – user3553031

回答

4

,你張貼在codepad.org的代碼是

__some__={} 
def main(): 
    assert __some__ == type("Hello World").__name__ 
    assert __some__ == isinstance("Hello World", str) 
if __name__=="__main__": 
    main() 

type("Hello World").__name__'str'__some__{},所以他們當然不匹配。同樣,isinstance("Hello World", str)True,所以它也不匹配。你的條件是錯誤的,所以斷言失敗並拋出AssertionError。另一方面,如果您嘗試了assert 'str' == type("Hello World").__name__,則不會有任何例外,因爲該比較屬實。

此外,你不應該使用__foo__這樣的名字聲明你自己的變量。按照慣例,這些保留給由Python創建的特殊變量。

+0

非常感謝您可以建議一些來源學習Python 2.7以外的文檔 – saimadan

+1

您是否嘗試過[Python教程](https://docs.python.org/2 /教程/)? – user3553031

+0

不,我沒有嘗試這看起來不錯,我會從中學習。 – saimadan

相關問題