关键字参数

关键字参数允许你传入0个或任意多个含参数名的参数,这些关键字参数在函数内部自动组装为一个dict
对于关键字参数,函数的调用者可以传入任意不受限制的关键字参数,以扩展函数的功能
但至于到底传入了哪些关键字参数,就需要在函数内部通过kw检查

定义关键字参数函数

def person(name, age, **kw): #函数person除了必选参数name和age外,还接受关键字参数kw
  print('name:', name, 'age:', age, 'other:', kw)

person('Michael', 30) #输出:name: Michael age: 30 other: {},调用该函数时,可只传入必选参数
person('Bob', 35, city='Beijing') #输出:name: Bob age: 35 other: {'city': 'Beijing'},调用该函数时,也可传入任意个数的关键字参数

 

和可变参数类似,也可先组装出一个dict后,再把该dict转换为关键字参数传进去

extra = {'city': 'Beijing', 'job': 'Engineer'}
person('Jack', 24, city=extra['city'], job=extra['job']) #输出:name: Jack age: 24 other: {'city': 'Beijing', 'job': 'Engineer'}
person('Jack', 24, **extra)  #输出:name: Jack age: 24 other: {'city': 'Beijing', 'job': 'Engineer'},是上例的简写形式
                  # **extra表示把extra这个dict的所有key-value用关键字参数传入到函数的**kw参数,kw将获得一个dict
                  # 注意kw获得的dict是extra的一份拷贝,对kw的改动不会影响到函数外的extra

 

调用者可传入不受限制的关键字参数

def person(name, age, **kw):
  if 'city' in kw: #函数内可以对关键字参数进行检查
    # 有city参数
    pass
  if 'job' in kw:
    # 有job参数
    pass
print('name:', name, 'age:', age, 'other:', kw)

person('Jack', 24, city='Beijing', addr='Chaoyang', zipcode=123456) #关键字参数是任意的

 

转载于:https://www.cnblogs.com/shiliye/p/10906130.html

Python关键字参数是指在函数调用时,使用形如"key=value"的语法传递参数值。与位置参数不同,关键字参数不必按照函数定义时的顺序传递参数值,而可以根据参数名来传递,从而使得函数的使用更加灵活。 关键字参数的使用优点如下: 1. 增强代码的可读性:通过在函数调用时使用参数名来清晰地描述每个参数的含义,使得代码更加易于阅读和理解。 2. 减少参数调用顺序的限制:使用关键字参数可以根据参数名的顺序来传递参数值,而不必依赖于参数在函数定义中的位置,从而降低了参数顺序的限制。 3. 使得函数调用更加灵活:通过指定参数名来传递参数值,可以忽略某些参数,或者不按照参数定义的顺序传递参数值,从而使得函数的使用更加灵活。 关键字参数的使用示例: ```python def greet(name, age, city): print("姓名:" + name) print("年龄:" + str(age)) print("城市:" + city) greet(name="张三", age=18, city="北京") # 通过参数名传递参数值 greet(city="上海", name="李四", age=20) # 参数值的顺序可以任意 ``` 在函数定义时,可以使用默认值来定义关键字参数的默认参数值。如果在函数调用时没有传递该关键字参数的值,那么将使用默认值作为参数的值。例如: ```python def greet(name, age, city="北京"): print("姓名:" + name) print("年龄:" + str(age)) print("城市:" + city) greet(name="张三", age=18) # 使用默认值作为参数的值 ``` 总而言之,关键字参数使得函数调用更加灵活、可读性更强,能够方便地指定参数的值,从而提升代码的可维护性和可扩展性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值