python 内置函数__name__的作用
生活随笔
收集整理的這篇文章主要介紹了
python 内置函数__name__的作用
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
(1)背景:在python中每個獨立的python文件,都是一個模塊。在導入文件時,文件中沒有任何縮進的代碼(即主方法)都會被執行一遍。
(2)在實際開發中,開發人員會在主方法中增加一些測試代碼,比如測試一下函數是否正常執行,打印一些日志等。在不作處理的情況下,如果在其它文件中導入該模塊,將會自動執行這些測試代碼,一般這是不允許的。
1 # 文件1 2 # 文件名:測試模塊1.py 3 4 def say_hello(): 5 print("hello world") 6 7 print("這是測試模塊1") 8 say_hello() 1 # 文件2 導入文件1 2 # 文件名:test.py 3 4 import 測試模塊1 5 6 # 不必添加任何代碼,直接運行該文件,控制臺會輸出文件1的測試代碼 7 #這是測試模塊1 8 #hello world(3)此時要解決導入模塊自動執行測試代碼的問題,就輪到主人公"__name__"內置函數的出場了:
·作用:__name__ 屬性可以做到,測試模塊的代碼只在測試情況下被運行,而在被導入時不會被執行。
__name__ 記錄著一個字符串:①當前執行的程序調用__name__ ,返回的字符串是" __main__ ";
②如果是被其它文件導入,__name__ 返回的字符串則是導入文件的文件名。
# 文件1 # 文件名:測試模塊1.pydef say_hello():print("hello world")print(__name__) print("這是測試模塊1") say_hello()# 控制臺輸出 #__main__ #這是測試模塊1 #hello world # 文件2 導入文件1 # 文件名:test.pyimport 測試模塊1# 不必添加任何代碼,直接運行該文件,控制臺會輸出文件1的測試代碼 #測試模塊1 #這是測試模塊1 #hello world利用 __name__ 的這個屬性,我們可以改造文件1的代碼,解決測試代碼自動執行的問題:
# 文件1 # 文件名:測試模塊1.pydef say_hello():print("hello world")if __name__ == "__main__":print(__name__)print("這是測試模塊1")say_hello()再次執行文件2,控制臺就不會有測試代碼的輸出了。
轉載于:https://www.cnblogs.com/clearlove4396/p/11480506.html
總結
以上是生活随笔為你收集整理的python 内置函数__name__的作用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 设计模式-Strategy模式
- 下一篇: 评分卡建模