Python之路【第三篇】:Python基础(17)——函数动态参数

#动态参数:** 2星默认将传入的参数,全部放置在字典中f1(**{"kl":"v1", "k2":"v2"})
#带2星的用来处理那些带有键值对的值,即一个key一个value的值

# 示例
# def func(**kwargs):
# print(kwargs,type(kwargs))
# # 执行方式一
# func(name='wupeiqi',age=18)
# # 执行方式二
# li = {'name':'wupeiqi', 'age':18, 'gender':'male'}
# func(**li)
# # 输出
# # {'age': 18, 'name': 'wupeiqi'} <class 'dict'>
# # {'age': 18, 'gender': 'male', 'name': 'wupeiqi'} <class 'dict'>

# # 练习1
# def f1(**args): #两星 的类型是一个字典,字典的一个元素是键值对key-value,必须用指定参数来传值。
# print(args,type(args))

# f1("hello") #两星的情况下,传递一个参数会报错。
# 输出报错:
'''
Traceback (most recent call last):
File "C:/Users/Jam/PycharmProjects/s13/d3v1/12_函数8_动态参数_2星是字典.py", line 11, in <module>
f1("hello") #
TypeError: f1() takes 0 positional arguments but 1 was given
'''

# # 练习2
# def f1(**args): #
# print(args,type(args))
# f1(n1="hello") #这相当于一个指定参数,作为字典的一个键值对,把n1当做key,把"hello"作为value
# 输出
# {'n1': 'hello'} <class 'dict'>

# # 练习3
# def f1(**args): #
# print(args,type(args))
# f1(n1="hello",n2=18) #作为字典的两个键值对,n1是key,n2是key
# 输出
# {'n2': 18, 'n1': 'hello'} <class 'dict'>

# # 练习3
# def f1(**args): #
# print(args,type(args))
# dic = {'k1':'v1','k2':'v2'}
# f1(kk=dic) #kk当做一个key,字典dic当做一个value
# 输出
# {'kk': {'k2': 'v2', 'k1': 'v1'}} <class 'dict'>

# # 练习4 注:如果形式参数有2星,实际参数也有2星的情况,相当于是直接赋值,dic是什么值args就是什么值。
# def f1(**args): #
# print(args,type(args))
# dic = {'k1':'v1','k2':'v2'}
# f1(**dic) #实际参数有2星
#
# # # 输出
# # # {'k1': 'v1', 'k2': 'v2'} <class 'dict'>
posted @ 2016-05-28 05:22  漫画  阅读(184)  评论(0编辑  收藏  举报