为什么在调用可变参数kwargs的时候,要用关键字参数的方法来传递参数?kwargs输出的不是一个字典吗?
而且为什么如图调用的时候,可以出现不加引号的汉字并且不会报错啊,汉字难道不是属于字符串的一种吗?
而且为什么写完之后没有检查出错误,但是运行的时候又会出现红色的字体呢?而且出现了红色之后还是能够输出结果来,好奇怪(用的软件是VScode)
你说得每个字都是中文,就是连起来以后我一句都看不懂。
可变参数当然要用关键字(或者叫系统保留变量)来传递,这就是规定,记住就好,在初学阶段,不用去明白原理(中听的话),换句不中听的话就是说了你也听不懂(哈哈哈),就死记硬背即可。
kwargs的确是用来传递字典变量的,但你代码中用的是for k,v in kwargs:已经遍历了,并且是分别输出key和value了。
你并没有直接调用不加引号的汉字,如果你觉得有,请指明你觉得是哪句代码。汉字当然是字符串的一种。
你仔细看看红字错误,报的和本文件毫无关系。你运行时并没有红字异常,你的运行代码在控制台最后一行命令才是。
pycharm中无红字
例1:创建一个可以接受任意数量关键字参数的函数:
def myFunction(**kwargs):
for kw in kwargs:
print(kw, '-', kwargs[kw])
if __name__ == "__main__":
myFunction(a = 24, b = 87, c = 3, d = 46)
"""程序运行结果:
a - 24
b - 87
c - 3
d - 46
"""
例2:电脑售价的案例:
def myFunction(**computers):
for kw in computers:
print(kw, '-', computers[kw])
if __name__ == "__main__":
myFunction(dell = 1299.50, asus = 1870.00, hp = 1990.50)
"""程序运行结果:
dell - 1299.5
asus - 1870.0
hp - 1990.5
"""
例3:
def myFunction(x, y, **kwargs):
print(x)
print(y)
for key, value in kwargs.items():
print(key, '-', value)
if __name__ == "__main__":
myFunction("ABC", "MNO", a = 24, b = 87, c = 3, d = 46)
"""程序运行结果:
ABC
MNO
a - 24
b - 87
c - 3
d - 46
"""
例4:实发工资=基本工资-缴纳个税金额-缴纳社保费用
def pay(basic, **kvargs):
# 分别获取tax个人税与social社保费
tax = kvargs.get('tax')
social = kvargs.get('social')
# 实发工资=基本工资-缴纳个税金额-缴纳社保费用
pay = basic - tax - social
return pay
print('实发工资是{}'.format(pay(8000, tax=500, social=1500))) # 实发工资是6000