Ethon

为什么要有方法,因为懒惰是一种美德。

   :: 首页  :: 新随笔  ::  ::  :: 管理
# 位置传递, 只有一个*时表示元组
def func_1(*args):
    print(args)


func_1(1)  # (1,)
func_1(1, 2)  # (1, 2)
func_1(1, 2, 3)  # (1, 2, 3)

list = [4, 5, 6]
func_1(list)  # ([4, 5, 6],)

 

# 关键字传递,2个**是表示字典
def func2(**kwargs):
    print(kwargs)


func2(a=1)  # {'a': 1}
func2(a=1, b=2)  # {'a': 1, 'b': 2}
func2(a=1, b=2, c=3)  # {'a': 1, 'b': 2, 'c':3}

 

# *args和**kwargs一起使用
def test_1(*args, **kwargs):
    print(args, type(args))  # (1, 2, 3) <class 'tuple'>
    print(*args)  # 1 2 3

    # 一个*时表示获取键值key
    print(*kwargs)  # x y z

    test_2(**kwargs)  # 22 33 44


def test_2(x, y, z):
    print(x)
    print(y)
    print(z)


test_1(1, 2, 3, x=22, y=33, z=44)

 

# Demo
def add(name, *args):
    sum = 0
    if len(args) > 0:
        for i in args:
            sum = sum + i
        print(name + " 累加和是 sum:", sum)
    else:
        print("没有元素可以计算,sum:", sum)


add("chenming", 1, 3, 5, 6)  # chenming 累加和是 sum: 15

 

# 装包,拆包
students = {"001": ("张三", 12), "002": ("李四", 13), "003": ("王五", 14)}


# 定义时传两个*, 就是装包
def func_3(name, **kwargs):  # **kwargs 装包
    print("{}喜欢的角色:".format(name))
    if isinstance(kwargs, dict):
        values = kwargs.values()
        print(values)
        for name, age in values:
            print("{}的年龄是:{}".format(name, age))


# 调用时传两个*,就是拆包
func_3("kobe", **students)  # **students 将字典拆包

"""
kobe喜欢的角色:
dict_values([('张三', 12), ('李四', 13), ('王五', 14)])
张三的年龄是:12
李四的年龄是:13
王五的年龄是:14
"""

 

posted on 2020-02-10 11:15  Ethon  阅读(220)  评论(0编辑  收藏  举报