Argpar'dan bir işleve geçmek istediğim birçok olası argümanım var. Değişken ayarlanmamışsa, yöntemin varsayılan değişkenini kullanmasını istiyorum. Ancak, taşıma hangi argümanları ayarlayabilir ve hangi is sıkıcı değil var olan:Python'da argümanların koşullu geçişi
import argparse
def my_func(a = 1, b = 2):
return a+b
if __name__ == "__main__":
parser = argparse.ArgumentParser(description='Get the numeric values.')
parser.add_argument('-a', type=int)
parser.add_argument('-b', type=int)
args = parser.parse_args()
if not args.a is None and not args.b is None:
result = my_func(a = args.a, b = args.b)
elif not args.a is None and args.b is None:
result = my_func(a = args.a)
elif not args.b is None and args.a is None:
result = my_func(b = args.b)
else:
result = my_func()
Ben böyle bir şey yapmak mümkün olmalıdır gibi görünüyor:
result = my_func(a = args.a if not args.a is None, b = args.b if not args.b is None)
Ama bu konuda söz dizimi hatası veriyor virgül.
Argparser'de varsayılan değerleri ayarlayabilirim, ancak yöntem tanımında ayarlanan varsayılanları kullanmak istiyorum.
Yalnızca bir "else" varsa, bir ifadede 'if' kullanabilirsiniz. 'f (a eğer b)' - iyi değil. f (a eğer b else c) '- iyi. – Kevin