编译器显示prime(list,num)缺少的关键字参数,但我认为我正确地执行了此操作* arg用于列表,n用于num。 但是为什么print(list,num)的show keyword参数错误
num = int(input('Please enter a number : '))
list = [i for i in range(2,int((num/2) +1))]
def prime(*arg , n):
for test in arg:
if n % test == 0 :
print('%d number is not a prime number.' %n)
elif n == 1 or n == 0:
print('Number is bellow 2.')
else :
print('It is a prime number')
prime(list, num)
答案 0 :(得分:1)
从语法上讲,仅关键字参数被编码为可能出现在参数列表中*arg
之后的命名参数。必须在调用中使用关键字语法传递所有这些参数。
例如,在下文中,a
可以按名称或位置传递,
b
收集任何额外的位置参数,c
必须仅通过关键字传递。
>>> def kwonly(a, *b, c):
print(a, b, c)
>>>>kwonly(1, 2, c=3)
1 (2,) 3
>>>kwonly(1, 2, 3)
TypeError: kwonly() missing 1 required keyword-only argument: 'c'
因此,您必须仅将n
作为关键字参数传递。
def prime(*arg , n):
n
必须通过仅限关键字值传递
prime(list, n=num)
答案 1 :(得分:0)
从*
参数
arg
def prime(arg, n):
# rest of code here