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