8-8 关键字可变参数
def squsum(*param): #可变参数
sum = 0
for i in param:
sum +=i * i
print(sum)
squsum(1,2,3,4,5,6)
# 举个例子,如果想要知道全国任意城市的温度,怎么编程?这时候需要用到
# 用到任意个数关键字参数,看例子
def city_temp(*param):
pass
city_temp(bj = '32c',xm = '23c', sh = '32c')
# 上述运行会出错,如图1,原因在于一个 * 不能接受可变的关键字列表!
# 看下正确的运行结果
def city_temp(**param): #用两个星号就可以了 **
print(param)
print(type(param))
pass
city_temp(bj = '32c',xm = '23c', sh = '32c')
# 如图2所示,打印出来的是字典
# 想一想,知道了是字典类型以后,要求在city_temp内部,把每个城市的温度打印出来
# 该如何处理?
# 要打印可变关键字里面列表的所有元素,我们就要遍历这个字典,问题转换为如何迅速的遍历字典?
def city_temp(**param):
for c in param:
print(c)
city_temp(bj = '32c',xm = '23c', sh = '32c')
# 如图3,打印结果只有城市,没有温度,不正确
# 下面看看另外一种错误的打开方式!
def city_temp(**param):
for key,value in param:
print(key,':',value)
city_temp(bj = '32c',xm = '23c', sh = '32c')
# 打印结果如图4,是错误的
# 正确遍历字典的方法如下:
def city_temp(**param):
for key,value in param.items():# 调用param里的内置方法items即可!
print(key,':',value)
city_temp(bj = '32c',xm = '23c', sh = '32c')
#上述结果如图5所示,打印的是正确结果!!
# 面对一个关键字列表 ,如何把一个字典传进来?如图6
def city_temp(**param):
for key,value in param.items():# 调用param里的内置方法items即可!
print(key,':',value)
a = {'bj' : '32c','xm' : '23c', 'sh' : '32c'}
city_temp(**a) #这样即可
# 无论是普通参数列表,还是关键字可变参数列表,目的都是简化函数的调用
# 无论是普通参数列表,还是关键字可变参数列表,他们都有共同的特性:
#来看看上面值都不传入的情况下:图7
def city_temp(**param):
print(param)
for key,value in param.items():# 调用param里的内置方法items即可!
print(key,':',value)
a = {'bj' : '32c','xm' : '23c', 'sh' : '32c'}
city_temp() # 什么值都不传入,打印的是字典,但是for循环进不去
# 混合参数的情况下,怎么处理?
def city_temp(param1,**param): #必须参数,可变参数
print(param1)
print(param)
for key,value in param.items():
print(key,':',value)
a = {'bj' : '32c','xm' : '23c', 'sh' : '32c'}
city_temp(1) # 此时传入必须参数的1
# 如图8 打印结果是 param1 是1 而**param打印结果是空字典








网友评论