2015-04-05 31 views
0

基本上,​​,我會做:爲什麼Python的argparse模塊動態(隱含地)創建變量名而不是強制顯式賦值?

parser = argparse.ArgumentParser(description="This is a command line parser!") 
group = parser.add_mutually_exclusive_group() 
group.add_argument('--send-emails', action="store_true", help="This will send production emails") 
args = parser.parse_args() 
if args.send_emails: 
    send_emails() 

"--send-emails"自動裝箱到"send_emails"。這似乎有點傳統/隱含。強制使用name=參數會讓它更加明確。

是否有任何PEP或郵件列表線程可以幫助我理解此理由?

編輯:我發現這個PEP的argparse,但一個快速瀏覽似乎表明它沒有解決這個具體的事情。 https://www.python.org/dev/peps/pep-0389/

回答

2

optparse做同樣的事情 - 從選項字符串派生默認dest

getopt也將option stringslong options(即參數標誌)與值配對。

所以​​正在複製其前身。

​​不同之處在於它還解析positional參數。對於那些dest是第一個(非關鍵字)參數。

整體​​試圖給你儘可能多的權力,同時使常見情況相對簡單,主要是通過使用邏輯默認值。 nargsactiontypedefault都有默認值。可選的關鍵字參數遍佈公共API。

0

基本原理是隻指定一次名稱會更方便。如果您願意,您可以提供一個明確的名稱,參數爲dest="name"。但爲什麼說兩次?

+0

這裏的不同之處在於,有一個關於轉換「show-items」可能已經轉換爲「show_items」的約定。 – mallyvai 2015-05-04 22:00:42

相關問題