zoukankan      html  css  js  c++  java
  • 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	显示帮助'
                print '-n	你的姓名'
                print '-w	想要说的话'
                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就是参数的内容。

  • 相关阅读:
    poj3273Monthly Expense
    poj2516Minimum Cost
    poj1201Intervals(差分约束)
    poj3122Pie
    poj3258River Hopscotch
    hdu3308LCIS(线段树区间合并)
    CF1178F2 Long Colorful Strip
    CF906C Party
    [NOI2002]贪吃的九头龙
    CF1178F1 Short Colorful Strip
  • 原文地址:https://www.cnblogs.com/handsome1013/p/9269013.html
Copyright © 2011-2022 走看看