关键字值args在python中的作用?

时间:2018-12-17 16:59:08

标签: python

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的目的吗?

2 个答案:

答案 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)需要正确的顺序。关键字参数可以以任何顺序传递,但只能在位置参数之后传递。