저는 주로 파이썬에서 명령 행 스크립트를 만들기 위해 argparse를 사용했습니다. 일반적으로 사용하는 관용구는 인수를 그런 다음 속성 이름과 일치하는 변수에 개별적으로 구문 분석하십시오. 이것은 약간 반복되는 것처럼 보입니다. 그들 모두를 전역 네임 스페이스에 할당하고 할당 단계를 생략 할 수있는 방법이 있습니까? 또는 일부 파이썬 동작이 나에게 반 직관적 인 것처럼 보이는 경우처럼, 일부 현명한 사람이 파이썬 전문가가 지적한 바에는 이렇게하지 않거나 이렇게하고 싶지 않을 수 있습니다. 나는이 싶은 무엇파이썬은 전역 네임 스페이스에 argparse parse_args를 덧붙입니다. (또는 나쁜 생각입니다.)
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 객체에 이미 존재하는 속성이 전역 네임 스페이스로 바뀌면 버그가 나기 시작합니다.
하지 마십시오. 그냥 하지마. 대신'args'를 직접 사용하겠습니다. –
@ MartijnPieters, 당신은 정확하게 내가 무게를 달고 싶었던 현명한 파이썬 전문가 중 한 명이었습니다. – Mittenchops