python的main函数

先上代码,再上说明。

  • 创建一个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
  • 好了,我们运行吧
$ 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 , 我胡汉三又回来啦!
  • 解释点什么呗

__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就是参数的内容。

那么,差不多就这样啦,具体还请各位看官去参考样例吧~

  • 9
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值