python的main函数
python的main函数
https://blog.csdn.net/ppppfly/article/details/53415999
先上代码,再上说明。
- 创建一个Python文件
say_hi.py
# coding=utf-8
import getopt
import sys
if __name__ == '__main__':
opts, args = getopt.getopt(sys.argv[1:], 'hn:w:', ['name=', 'word=', 'help'])
name = 'No Name'
word = 'Hello'
for key, value in opts:
if key in ['-h', '--help']:
print '一个向人打招呼的程序'
print '参数:'
print '-h\t显示帮助'
print '-n\t你的姓名'
print '-w\t想要说的话'
sys.exit(0)
if key in ['-n', '--name']:
name = value
if key in ['-w', '--word']:
word = value
print '你好,我叫', name, ',', word
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 好了,我们运行吧
$ python say_hi.py
你好,我叫 No Name , Hello
$ python say_hi.py -h
一个向人打招呼的程序
参数:
-h 显示帮助
-n 你的姓名
-w 想要说的话
$ python say_hi.py --help
一个向人打招呼的程序
参数:
-h 显示帮助
-n 你的姓名
-w 想要说的话
$ python say_hi.py -n 'ppppfly'
你好,我叫 ppppfly , Hello
$ python say_hi.py -n 'ppppfly' -w '我胡汉三又回来啦!'
你好,我叫 ppppfly , 我胡汉三又回来啦!
$ python say_hi.py --name 'ppppfly' --word '我胡汉三又回来啦!'
你好,我叫 ppppfly , 我胡汉三又回来啦!
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 解释点什么呗
__name__ == '__main__'
是Python的main函数
入口。并非说,加入这句才能使用python xxx.py
来执行,而是说,这里可以判断,当前是否是直接被python直接调用执行。
getopt
是一个包装方法,用以读取main函数
后面跟着的参数。getopt.getopt(args, options[, long_options])
有三个变量,args就是python xxx.py
后面跟着的参数,通常就是sys.argv
数组,不过我们一般会去除第一个元素,因为sys.argv
的第一个元素,就是文件名
本身。所以,我们的写法是sys.argv[1:]
。
options
是一个字符串,描述了需要解析哪些参数。如果一个参数,不需要跟变量,比如-h
,那么直接使用参数名即可。如果一个参数需要传入变量,则在后面加:
,比如n:
。所以本案例中hn:w:
的意思是,我们有三个参数,分别是-h
, -n
, -w
,其中-h
无需传入变量,而-n
, -w
需要传入变量。
long_options
是一个字符串数组,也表示需要解析哪些参数。long_options
是相对options
而言的,我们在linux中,经常会看到一个命令的参数有多种写法,最常见的就是帮助参数,它有两种写法:-h
, --help
。前一种是就是我们的options
,而后一种就是long_options
。
假如我们有一个--help
,那么在long_options
中就是['help']
。如果一个参数需要传入参数,比如--name 'Good'
,那么在long_options
中就是['name=']
,是的,就是多一个=
。
getopt.getopt
返回一个元组(opts, args),其中opts
就是我们解析出来的参数,而args
则是剩余没有解析的参数。opts
是元组数组,每个元组,相当于key-value。key
就是我们的参数名,而value
就是参数的内容。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架