def calculate_set(x,y, city, address, geo, etheraddress, email, country_of_origin):
print(city)
print(address)
print(email)
print(country_of_origin)
假设我以错误的方式传递了参数的顺序:
calculate_set(30,40, geo = "rowanda",
etheraddress= "xu203942",
address="baker street 304",
city="london",
email = "abc@gmail.com",
country_of_origin= 'uk')
该功能仍然可以正常工作,而在Java中,它将仅显示错误消息msg,表明args的顺序是错误的,并且无法识别? 这是python中关键字args的目的吗?
答案 0 :(得分:2)
有很多方法可以将参数传递给函数。在内部,参数是通过赋值传递的。函数参数是对调用方引用的共享库的引用。
按位置传递参数的正常情况。
func(a, b) # Recieved as is left to right
调用者可以指定函数中的哪个参数要接收 通过在调用中使用参数的名称来获得值。
func(a=10, b=20) # Keyword argument or named argument -> POSITION DOESN'T MATTER
函数可以使用特殊参数来任意收集许多额外的信息 参数(与C中的varargs功能一样,Java支持 变长参数列表)。
func(**var_dict) # Pass arguments as dictionary
函数还可以为要接收的参数指定默认值,如果 通话传递的值太少
def func(a=10):
print(a)
func() # Prints 10
关键字参数后不能传递位置参数
答案 1 :(得分:1)
在Python中,仅位置args(不带默认值的args)需要正确的顺序。关键字参数可以以任何顺序传递,但只能在位置参数之后传递。