首页 > 试题广场 >

执行下列程序,输出结果为() def fun(a,*,b):

[单选题]

执行下列程序,输出结果为()

def fun(a,*,b):

    print(b)

fun(1,2,3,4)

  • [2,3,4]

  • [3,4] 
  • 报错 
  • 4
如果你希望强迫调用者使用某些参数,且必须以关键字参数的形式传参,那么你只需要在所需位置的前一个位置放置一个*。 def f1(a, *, b, c): return a + b + c 对于上面这个函数而言,调用时参数a可以任意值, 但b,c参数一定要以关键字参数的形式传参,如f1(1, b=4, c=5),否则将会报错。
发表于 2022-02-25 14:05:22 回复(2)
参数的顺序应该是(位置参数,默认参数,位置不定长参数,关键字不定长参数)
发表于 2021-12-16 10:35:03 回复(2)
*后面的参数b必须使用keyword的形式赋值,即

def fun(a,*,b):

    print(b)

fun(1,b=2)这种形式,而题中的fun(1,2,3,4)里面的1,2,3,4全部被认定为给的是a的值,而a只能有一个值,并且没有给b的值,所以报错
补充:还有一个符号/,如(a,/,b,*,c),这里在/前的a必须使用positional的方式,b可以使用positional方式也可以使用keyword方式,c只能使用keyword方式,即fun(1,2,c=3)或者fun(1,b=2,c=3)。
发表于 2022-03-07 20:10:27 回复(1)
def fun(a,*args,b):
    print(b)

def fun1(a,b=1,*args):
    print(args)


#fun(1,2,3,4)                    # TypeError: fun() missing 1 required keyword-only argument: 'b'
fun1(1,2,3,4)                    # (3, 4)


发表于 2022-01-04 10:51:50 回复(0)
当函数的形式参数为*的时候,它并不属于未匹配的位置参数,它表示*号后面的位置参数要使用关键字传参,才可以正常传参
def fuc(a,*,b)
    print(b)
# 函数调用
fuc(1,b=2)
上面输出的结果就为2,因为在下面的函数调用中,b=2 这里就使用了关键字传参数,1对应上面形式参数的a,所以这里的1就是位置传参
编辑于 2022-04-27 10:12:05 回复(0)
考的是函数的不定长参数,如果函数名后面的参数中,*在几个参数中间,表示,*以后的函数,在实际应用的时候,都需要表示为b=数字的形式,正确的调用应该是func(1,b=2)
发表于 2022-03-14 15:20:44 回复(0)
雪花后面的参数必须实名制。
发表于 2022-08-01 20:09:44 回复(0)
使用*限制只能输入关键字参数:在星号右侧只能使用关键字参数,左侧既可以使用位置参数也可以使用关键字参数
def abc(a,*,b,c):
    print(a,b,c)
abc(1,b=2,c=3)

发表于 2022-07-01 16:34:27 回复(0)
是不是fun(1,2,3,4)中的参数都赋值给了a,而没有给b传参
发表于 2022-07-14 19:05:36 回复(0)
惒头像
没有使用/和*,参数可以使用位置形式和关键字形式;若加了/,/前只能使用位置形式,/后两种都行;若加了*,*后面只能使用关键字形式,/前两种都行
发表于 2023-09-13 11:25:05 回复(0)
不要看错了,这是单独的新号
发表于 2022-06-02 20:48:36 回复(0)