为什么参数中缺少关键字错误

时间:2016-11-08 16:15:19

标签: python

编译器显示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)

2 个答案:

答案 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