python程序的name属性作用是什么_python __name__ == ‘__main__’详细解释+例子
學習過C語言或者Java語言的盆友應該都知道程序運行必然有主程序入口main函數,而python卻不同,即便沒有主程序入口,程序一樣可以自上而下對代碼塊依次運行,然后python不少開源項目或者模塊中依然存在 __name__ == “__main__” 這種寫法,具體是上面意思呢?
一.語義解釋
1.__name__
__name__?是python的內置屬性,是系統全局變量!每一個py文件都有一個屬于自己的__name__:
如果py文件作為模塊被導入(import),那么__name__就是該py文件的文件名(也稱 模塊名);
如果py文件直接運行時(Ctrl+Shift+F10),那么__name__默認等于字符串”__main__”;
舉個簡單的例子:假如你名字是張三,在朋友眼中,你是張三(__name__ == '張三');在你自己眼中,你是你自己(__name__ == '__main__')
2.”__main__”
“_ _main_ _”?實際上就是一個字符串,用來鑒別程序入口,沒有太多花里胡哨的東西.
3.__name__ == “__main__”
當.py文件被直接運行?(Ctrl+Shift+F10)時,?if??__name__ == “__main__”??之下的代碼塊將被運行,該語句就相當與python的main主函數入口,示例代碼如下:
a.新建一個 my_name.py 文件,作為模塊文件:
# !usr/bin/env python
# -*- coding:utf-8 _*-
"""
@file name: my_name.py
Created on: 2020-9-03
Author: Charlie
This program is just a test; you can run it.
@Motto:不積跬步無以至千里,不積小流無以成江海,程序人生的精彩需要堅持不懈地積累!
"""
import os
import subprocess
import sys
# 定義一個函數并打印 __name__
def prit_name():
print ("my_name.py __name__:", __name__)
if __name__ == "__main__":
# 獨立執行
prit_name()
print ("run alonely!")
else:
# 被導入
print ("not run alonely!")
=======================================
b.新建一個 python_main.py 文件,作為啟動文件 (Ctrl+Shift+F10):
# !usr/bin/env python
# -*- coding:utf-8 _*-
"""
@file name: python_main.py
Copyright (C) 2020 GRGBanking Corporation
Created on: 2020-9-03
Author: Charlie
This program is just a test; you can run it.
@Motto:不積跬步無以至千里,不積小流無以成江海,程序人生的精彩需要堅持不懈地積累!
"""
import os
import subprocess
import sys
# 導入 my_name 模塊
import my_name
phonebook = {'alice':'123','tom':'456'}
alice_num = phonebook["alice"]
num = 3+6;
# 定義一個函數并打印 __name__
def prit_name():
my_name.prit_name()
print("python_main.py __name__:", __name__)
print ("alice_num = %d",alice_num)
print('%s' % 'alice_num')
print('%s' % alice_num)
print('%d' % 56)
print('%d' % num)
if __name__ == "__main__":
prit_name()
輸出結果:
pchui@ubuntu:~/work/RK3399/charlie$ python python_main.py
not run alonely!
('my_name.py __name__:', 'my_name')
('python_main.py __name__:', '__main__')
('alice_num = %d', '123')
alice_num
123
56
9
由此可見,作為啟動文件 python_main.py ,該文件的內置屬性 __name__ 等于 “__main__”,而my_name.py 作為導入模塊,該模塊的 __name__ 等于文件名(也稱模塊名字),所以my_name.py 中的 表達式 if __name__ == “__main__” 并不成立!
當直接將my_name.py作為啟動文件時?(Ctrl+Shift+F10),輸出:
my_name.py?__name__:?__main__
如果py文件作為模塊被導入(import),那么__name__就是該py文件的文件名(也稱 模塊名);
如果py文件直接運行時(Ctrl+Shift+F10),那么__name__默認等于字符串”__main__”;
二.作用
1.__name__ == “__main__” 作為啟動py文件的main函數入口
2.一個項目中必然會包含多個模塊文件,每個模塊文件在自己寫完代碼之后會做一些簡單的測試用于檢測bug 或者 對自己的函數調用寫一個簡單的示例,而恰到好處的是:__name__ == “__main__”? 既不會影響你的測試代碼,也不會影響別人調用你的接口函數。
if __name__ == "__main__":
# 獨立執行
prit_name()
print ("run alonely!")
else:
# 被導入
print ("not run alonely!")
總結
以上是生活随笔為你收集整理的python程序的name属性作用是什么_python __name__ == ‘__main__’详细解释+例子的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 不到30的成本,还不赶紧造起来——盘点软
- 下一篇: mysql数据库(10):数据 备份