如果您只是想为常规功能执行此操作,您可以执行以下操作:
def ask(a, b=None, c=None):
if(b is None or c is None):
return 'Error!'
return 'Ok'
def ask2(*a):
if(len(a) !=3):
return 'Error!'
return 'Ok'
print('---- ASK 1 -------')
print(ask(1,2,3)) //OK
print(ask(1,2)) //Error
print(ask(1)) //Error
print('\n---- ASK 2 -------')
print(ask2(1,2,3,4)) //Error
print(ask2(1,2,3)) //Ok
print(ask2(1,2)) //Error
print(ask2(1)) //Error
这里我定义了2种ask,第一种最多3个参数,至少1个。
第二个使用*,它可以得到一个包含任意数量项目的数字集合,然后在方法内部,我们检查集合的长度是否正好是3(借助len)。
但是,如果您想将此函数用于命令行接口的 python 参数,有一个更好的方法可以做到这一点,check here 了解更多详细信息。
import argparse
parser = argparse.ArgumentParser(description='Process some integers.')
parser.add_argument('integers', metavar='N', type=int, nargs='+',
help='an integer for the accumulator')
parser.add_argument('--sum', dest='accumulate', action='store_const',
const=sum, default=max,
help='sum the integers (default: find the max)')
args = parser.parse_args()
print(args.accumulate(args.integers))
借助argparse,您可以强制用户准确输入启动程序所需的参数数量,也可以为用户可以使用的命令定义可选参数等。