目录/Table of Content
大家好,我是一个喜欢研究算法、机械学习和生物计算的小青年,我的CSDN博客是:一骑代码走天涯
如果您喜欢我的笔记,那么请点一下关注、点赞和收藏。如果內容有錯或者有改进的空间,也可以在评论让我知道。😄
在Python程序中,经常用看到 if name == “main”,到底是什么意思,有什么用呢?还有,有时看到调动程序时,用戶可以自行加入参数来显示和运行不同东西,如果要自己写应该要怎么写?
if __ name__ == “__ main__” - 脚本呼叫控制
考虑以下两段 python 代码:
# main_script.py
import sys
import imported_script
if __name__ == 'main_script':
print("imported as library!!!")
if __name__ == '__main__':
print("Running...")
a = sys.argv[0]
print(a)
print(sys.argv)
print("This is main script.")
# imported_script.py
import sys
import main_script
print("This is imported script")
如果在在电脑上分別运行的話:
-
main_script.py 运行结果
-
imported_script.py 运行结果
总结:
如果用了 if __name__ == "__main__":
标注程序代码,那个程序就只能在作为主程序直接呼叫时才能运行,而被当成普通包呼叫时则不会运行。如果想在被当成普通包呼叫时可以运行特定代码,可以写if __name__ == "脚本档案名(去掉 .py)":
。
sys.argv - 参数输入
考虑 main_script_param.py 的代码:
# main_script_param.py
import sys
if __name__ == '__main__':
print("Number of params: ", len(sys.argv))
print("Show all params...")
print(sys.argv)
如果输入不同参数分別运行的話:
- 不加入参数的运行结果:
- 加入两个参数的运行结果:
总结:
当用戶运行程序时在后面加入参数,sys.argv
可以直接顺序地把这些参数显示出来。因為这是一个list
格式,如果想调用里面的参数可以直接用sys.argv[n]
(n 是列表位置) 把参数调出来,而第一个永远都是该脚本文件名称。