1. Python中的 if __name__ == '__main__' 是什么?

        共 1778字,需瀏覽 4分鐘

         ·

        2024-04-11 08:49

        新手學(xué)Python的時(shí)候,一定見過`if __name__ == '__main__':`這段代碼, 尤其是在寫Python腳本 的時(shí)候 。 這段代碼究竟是啥意思,有啥作用? 為了搞懂這行代碼,首先要了解Python中的`__name__`屬性和主程序概念。 __name__ 屬性 在Python中,每個(gè)Python文件(不管是被執(zhí)行的腳本還是被導(dǎo)入的模塊)都有一個(gè)內(nèi)置的`__name__`屬性。 當(dāng)文件被直接執(zhí)行時(shí),`__name__`的值會(huì)被設(shè)置為`'__main__'`,而當(dāng)文件被導(dǎo)入到其他文件時(shí),`__name__`的值則會(huì)被設(shè)置為文件的名字。 主程序和模塊 主程序:就是直接被運(yùn)行的Python文件,程序運(yùn)行的入口,在這個(gè)文件中,`__name__`的值是`'__main__'`。 模塊:被其他Python文件導(dǎo)入(import)使用的文件。在這個(gè)文件中,`__name__`的值是該文件的名稱。  if __name__ == '__main__'是什么? 所以,現(xiàn)在你應(yīng)該明白這行代碼的意義了吧?就是讓Python判斷當(dāng)前運(yùn)行的環(huán)境是主程序還是被導(dǎo)入的模塊。 如果是主程序,那么 if 代碼塊將被執(zhí)行。如果是被導(dǎo)入的模塊,那么這部分代碼就不會(huì)被執(zhí)行。 為什么要這樣做? 這樣做有幾個(gè)好處: 1. 模塊化和復(fù)用:允許單個(gè)Python文件既可以被導(dǎo)入使用,也可以作為獨(dú)立的程序運(yùn)行。 2. 測試代碼:你可以在`if __name__ == '__main__':`下面寫一些測試代碼,只有在文件作為主程序運(yùn)行時(shí)這些代碼才會(huì)被執(zhí)行,這樣就不會(huì)影響到此模塊被其他文件導(dǎo)入時(shí)的行為。 3. 代碼清晰:這種做法可以清晰地區(qū)分模塊的接口和實(shí)現(xiàn),讓代碼更易于理解和維護(hù)。 示例 假設(shè)有兩個(gè)文件:`module.py`和`main.py`。 module.py內(nèi)容:
              
                
                  def foo():
                
              
              
                    print("foo() from module.py")
              
              
                if __name__ == '__main__':
              
              
                    print("module.py is being run directly")
              
              
                else:
              
              
                    print("module.py is being imported into another module")
              
            
        main.py內(nèi)容:
              
                import module
              
              
                
                  module.foo()
                
              
            
        當(dāng)你直接運(yùn)行 module.py 時(shí),會(huì)看到"module.py is being run directly"。 但如果你運(yùn)行`main.py`,`module.py`被導(dǎo)入,你會(huì)看到"module.py is being imported into another module",然后是"foo() from module.py"。 通過這個(gè)例子,你可以看到`if __name__ == '__main__':`如何幫助區(qū)分直接執(zhí)行和被導(dǎo)入的情況,以及如何根據(jù)不同的運(yùn)行環(huán)境執(zhí)行不同的代碼。 這在開發(fā)大型Python應(yīng)用時(shí)特別有用,可以讓每個(gè)文件既可以獨(dú)立運(yùn)行,也可以作為模塊被其他文件導(dǎo)入。 總結(jié):
        這行代碼的作用是判斷當(dāng)前運(yùn)行的是主程序還是被導(dǎo)入的模塊。
        推薦閱讀:
        1. 用 Python 破解老王家的 Wi-Fi 密碼,刺激!

        2. 中國程序員,獨(dú)立開發(fā)9年的軟件,被Redis公司收購

        3. 公眾號(hào)AI爆文寫作訓(xùn)練營



        歡迎添加微信與我交流
        圍觀朋友圈~
        瀏覽 34
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        評(píng)論
        圖片
        表情
        推薦
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
          
          

            1. 日本另类人妖ts | 国产超碰人人做人人爱ⅴa | 特级西西www大胆无码视频 | 成人门 性视频免费站 | 91在线无码 |