日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python中__name == '__main__'

發布時間:2025/3/20 python 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python中__name == '__main__' 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

這里對于執行順序一定要注意,大多數地方對于main()的執行都是說,這里更多的適用于測試,如果模塊被調用,因為此時的__name__為模塊的名字,則不會這行,如果作為一個單獨的“程序”則執行,總結如下。

對于? if?__name__ ==?'__main__': 的解釋相關博客已經給出了說明,意思就是

? ? ? ?1、當此文件當做模塊被調用時,不會從這里執行,因為此時name屬性就成了模塊的名字,而不是main。 當此文件當做單獨執行的程序運行時,就會從main開始執行。但是發現,前邊有類的聲明的時候,函數時如何執行的?

? ? ? 2 、對于帶有類的程序,會先執行類及類內函數,或者其他類外函數。這里可以總結為,對于沒有縮進的程序段,按照順序執行。然后,才到main函數。然后才按照main內函數的執行順序執行。如果main內對類進行了實例化,那么執行到此處時,只會對類內成員進行初始化,然后再返回到main 函數中。 執行其他實例化之后對象的成員函數調用。

對于1用一個實例進行解讀,定義一個mathfunc.py:

'''mathfunc.py-function defination''' def add(a, b):return a+b print "mathfunc:1+3 = ",(1+3)if __name__ == "__main__":print "mathfunc:add(a,b) = ",add(12,5)

運行并輸出:


現在調用模塊 mathfunc.py 的test_mathfunc.py的模塊

# -*- coding: utf-8 -*-import unittest from mathfunc import *print "test_mathfunc:a(3)+b(4)= ",(3+4) class TestMathFunc(unittest.TestCase):"""Test mathfuc.py"""@classmethoddef setUp(cls):print "test_mathfunc:setUp"print "do something before test.Prepare environment."@classmethoddef tearDown(cls):print "do something after test.Clean up."def test_add(self):"""Test method add(a, b)"""print "test_mathfunc:test_add"self.assertEqual(3, add(1, 2))self.assertNotEqual(3, add(2, 2))print "test_mathfunc:a(5)+b(6)= ",(5+6) printclass Test():'''Test the order of procedure'''def __init__(self):passdef add(self,a,b):return ( a + b )if __name__ == "__main__":test = Test()print "test_mathfunc:",test.add(7,8)

不同于c/c++有統一的程序入口函數main(),而Python則不同,它屬于腳本語言,不像編譯型語言那樣先將程序編譯成二進制再運行,而是動態的逐行解釋運行。也就是從腳本第一行開始運行,沒有統一的入口。

一個Python源碼文件(.py)除了可以被直接運行外,還可以作為模塊(也就是庫),被其他.py文件導入。不管是直接運行還是被導入,.py文件的最頂層代碼都會被運行(Python用縮進來區分代碼層次),而當一個.py文件作為模塊被導入時,我們可能不希望一部分代碼被運行。? ? ? ?

因為Python是解釋型的語言,按照“順序”執行,執行順序依次是導入模塊(import mathfunc)中的未縮進的程序段,這里即是 mathfunc.py中的print語句,接著是本模塊中未縮進的程序段,接著是派生的unittest.Testcase類


總結

以上是生活随笔為你收集整理的python中__name == '__main__'的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。