[英]Importing variables from a namespace object in Python
假設我有一個名稱空間args
,我從調用parser.parse_args()
獲得,它解析命令行參數。
如何將此命名空間中的所有變量導入到當前命名空間?
例如
parser.add_argument('-p', '--some_parameter', default=1)
args = parser.parse_args()
# ... code to load all variables defined in the namespace args ...
print some_parameter
我當然可以這樣做:
some_parameter = args.some_parameter
但如果我有大量的參數,我需要為每個參數提供一條這樣的線。
是否有另一種從命名空間導入變量的方法,而不必逐個瀏覽它們?
PS : from args import *
不起作用。
PS2 :我知道這是一個不好的做法,但這在一些極端情況下會有所幫助,例如我們在非常快速地對代碼進行原型設計和測試時。
可能是有史以來最糟糕的想法:因為您可以將任意對象傳遞給parse_args()
,傳遞__builtins__
模塊,以便可以將所有屬性都查找為局部變量。
p = argparse.ArgumentParser()
p.add_argument("--foo")
p.parse_args( "--foo bar".split(), __builtins__)
print foo
對於目標不是有效Python標識符的參數,這甚至可以“工作”:
# To use the example given by Francis Avila in his comment on Martijn Pieters' answer
getattr(__builtins__, '2my-param')
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.