如何在python函数中使用可选的命令行参数?

如何在python函数中使用可选的命令行参数?,python,function,sys,Python,Function,Sys,我想要一种更紧凑、更可扩展的方式来使用命令行args来为python函数提供数据,以下是我所拥有的: def getRelevant (number = 5, sortBy = "Change"): number, sortBy = int(number), sortBy relevant = ... return relevant if __name__ == "__main__": if len(sys.argv) == 3: print(g

我想要一种更紧凑、更可扩展的方式来使用命令行args来为python函数提供数据,以下是我所拥有的:

def getRelevant (number = 5, sortBy = "Change"):
    number, sortBy = int(number), sortBy
    relevant = ...
    return relevant

if __name__ == "__main__":
    if len(sys.argv) == 3:
        print(getRelevant(sys.argv[1], sys.argv[2]))
    elif len(sys.argv) == 2:
        print(getRelevant(sys.argv[1]))
    else:
        print(getRelevant())

它起作用了。但是我对这个条件不满意,有没有办法让它更简单?

您可以尝试使用argparse或Typer

argparse:


typer:

您可以尝试使用argparse或typer

argparse:

打字机:

应该这样做。它功能丰富、灵活。 就您的情况而言,以下内容起到了作用:

import argparse
parser = argparse.ArgumentParser(description='Description of your app here.')
parser.add_argument('-N', '--integers', default=5,  help='your help text here')
parser.add_argument('-S', '--sortby', default='Change', choices=['Change', 'SomeOtherOption'], help='some help text here ')

if __name__ == "__main__":
  args = parser.parse_args()
  print(args.integers) # prints 5 if nothing provided
  print(args.sortby)  # prints 'Change' if nothing provided
我们应该这样做。它功能丰富、灵活。 就您的情况而言,以下内容起到了作用:

import argparse
parser = argparse.ArgumentParser(description='Description of your app here.')
parser.add_argument('-N', '--integers', default=5,  help='your help text here')
parser.add_argument('-S', '--sortby', default='Change', choices=['Change', 'SomeOtherOption'], help='some help text here ')

if __name__ == "__main__":
  args = parser.parse_args()
  print(args.integers) # prints 5 if nothing provided
  print(args.sortby)  # prints 'Change' if nothing provided

argparse
当然是您想要学习的命令行选项和参数工具-它是所有开发人员都应该知道的工具的一部分(使用
日志记录
pdb

话虽如此,对于这种情况,您也可以非常简单地解决问题,而无需
argparse

if __name__ == "__main__":
    args = sys.argv[1:]
    print(getRelevant(*args))

argparse
当然是您想要学习的命令行选项和参数工具-它是所有开发人员都应该知道的工具的一部分(使用
日志记录
pdb

话虽如此,对于这种情况,您也可以非常简单地解决问题,而无需
argparse

if __name__ == "__main__":
    args = sys.argv[1:]
    print(getRelevant(*args))

可以使用*args使函数接受多个参数。无论何时需要在函数中设置默认值,都可以使用*args使函数接受多个参数。您需要如何在函数中设置默认值。。