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就是參數的內容。
