美文网首页
Python入门与进阶(8-8)

Python入门与进阶(8-8)

作者: buaishengqi | 来源:发表于2018-05-02 16:54 被阅读9次

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打印结果是空字典
01.jpg 2.jpg 3.jpg 4.jpg 05.jpg 06.jpg 07.jpg 08.jpg

相关文章

网友评论

      本文标题:Python入门与进阶(8-8)

      本文链接:https://www.haomeiwen.com/subject/ssjcrftx.html