Python3 的 if __name__ == “__main__“ 和 参数输入 sys.argv

大家好,我是一个喜欢研究算法、机械学习和生物计算的小青年,我的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")

如果在在电脑上分別运行的話:

  1. main_script.py 运行结果
    在这里插入图片描述

  2. 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)

如果输入不同参数分別运行的話:

  1. 不加入参数的运行结果:
    在这里插入图片描述
  2. 加入两个参数的运行结果:
    在这里插入图片描述

总结:
当用戶运行程序时在后面加入参数,sys.argv可以直接顺序地把这些参数显示出来。因為这是一个list格式,如果想调用里面的参数可以直接用sys.argv[n] (n 是列表位置) 把参数调出来,而第一个永远都是该脚本文件名称。


Reference 参考资料:

  1. https://docs.python.org/3/library/main.html
  2. https://www.cnblogs.com/aland-1415/p/6613449.html
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值