-
素胚勾勒不出你
单个星号将采用元组(或通常任何迭代器,如列表)并将其扩展为一系列参数,如下所示:def multiply_two_numbers(x, y): return x * ymy_tuple = (3, 4)multiply_two_numbers(my_tuple) # gives an errormultiply_two_numbers(*my_tuple) # gives 3 * 4 = 12双星号做了类似的事情,但用字典代替,用关键字参数代替位置参数:def say_my_name(first_name="", last_name=""): print(first_name + " " + last_name)some_guy = {"first_name": "Homer", "last_name": "Simpson"}say_my_name(**some_guy) # will print "Homer Simpson"
-
月关宝盒
Python 有一种非常有趣的处理函数参数的方式(我个人非常喜欢)。如果我们定义一个新函数def myFunc(*args, **kwargs): print(args, kwargs)我可以用myFunc(1, 2, 3, 4, a = 'a', b = 'b')并获得输出([1, 2, 3, 4], {'a': 'a', 'b': 'b'})为了具体回答你的问题,我也可以这样调用函数myFunc(*[1, 2, 3, 4], **{'a': 'a', 'b': 'b'})并获得完全相同的输出我还可以使用星号传递位置参数def add(x, y): return x + y并调用它nums = [1, 2]print(add(*nums))标准输出:3如您所见,1 和 2 分布在函数参数中。TDLR* 将列表解包为参数, ** 将字典解包为关键字参数*,如果您也想引用它,则**相当于其他一些语言。...
-
慕丝7291255
人们已经为你在争论中提供了保障,而星号通常在其他情况下不起作用(见本文末尾)。但是还有另一种使用星星的方法,那就是变量解包。>>> a, b, c = [1,2,3]>>> print(a,b,c)1 2 3到目前为止,一切都很好。但是如果你现在只想分配a呢?您可以捕获带星号的变量中剩余的内容。a, *rest = [1,2,3]>>> print (a, "and the rest", rest)1 and the rest [2, 3]一个不起作用的例子:>>> li = [1,2,3]>>> var = *li File "<stdin>", line 1SyntaxError: can't use starred expression here
-
叮当猫咪
the_list = [1, 3, 4]相比print(the_list) # prints the list as is; 1 parameter[1, 3, 4]随着使用*print(*the_list) # performs print(1, 3, 4); 3 parameters1 3 4the_dict = {"sep": "---", "end": " #END#"}相比print(5, 6, the_dict) # after 5 and 6 prints the_dict as is5 6 {'sep': '---', 'end': ' #END#'}随着使用*print(5, 6, *the_dict) # after 5 and 6 prints individual keys of the_dict5 6 sep end并使用**print(5, 6, **the_dict) # performs print(5, 6, sep="---", end=" #END#")5---6 #END#*最后,和的组合使用**:print(77, *the_list, **the_dict) # performs print(77, 1, 3, 4, sep="---", end=" #END#")77---1---3---4 #END#