我主要使用 argparse 在 python 中制作命令行脚本,我通常使用的习惯用法是将参数分配为对象的属性,然后将它们单独解析为与其属性名称匹配的变量。这似乎有点重复。有没有办法将它们全部分配到全局命名空间中并省略分配步骤;或者当某些python行为对我来说似乎违反直觉时,一些明智的python专家可以指出我不应该这样做或想要这样做的充分理由吗?
我现在拥有的是这样的:
if __name__ == "__main__":
parser = argparse.ArgumentParser()
parser.add_argument("--db",type=str, dest='db', nargs='?', default="test")
parser.add_argument("--collection",type=str, dest='collection', nargs='?', help="Collection, default is test", default="test")
args = parser.parse_args()
db = args.db # gross!
collection = args.collection # yuck!
print(db)
print(collection)
我想要的是:
if __name__ == "__main__":
parser = argparse.ArgumentParser()
parser.add_argument("--db",type=str, dest='db', nargs='?', default="test")
parser.add_argument("--collection",type=str, dest='collection', nargs='?', help="Collection, default is test", default="test")
parser.SUPER_parse_args() # now, db and collection are already in the namespace!
print(db)
print(collection)
当我只有 2 个参数时,它似乎并不多,但如果我有 10 个左右,加倍分配步骤,我将 args 对象中已经存在的属性重命名到全局命名空间中,开始困扰我。