函数--动态参数

回顾

一、参数的种类:
1、静态参数:
    (1)、普通参数:严格按照顺序,将实际参数复制给形式参数。
    (2)、默认参数:一定要放在参数列的最后(即普通参数后面)。
         注意:
              给默认参数传参,会被覆盖掉(例如:XX = OK被BB覆盖)
              默认参数一定要放到,所有参数的末尾否则报错。
    (3)、指定参数:讲实际参数复制给指定的形式参数。
 
2、动态参数:
    (1)、*args:     把N个实参赋值给形参,并转化为元祖。 f(*[1,22,33,44,55])
    (2)、**kwargs:把N个关键字参数转换成字典额方式。(关键字=key)  f1(**{''k1":''v1","k2":"v2"})
    (3)、万能参数:def  f1(*args **kwargs)
 
 
 

动态参数

一、*  : 接受N个位置参数,转化为元祖的形式:(*args)
实例1、实参无论传输的是什么数据类型,都会视为一个元素,并转化成元祖。
 1 def f1(*args):
 2     print(args,type(args))
 3 
 4 f1(11)
 5 
 6 li = [11,22,33,44]
 7 f1(li)
 8 f1(li,'dy','aa','bb','cc')
 9 
10 
11 显示结果:
12 (11,) <class 'tuple'>
13 ([11, 22, 33, 44],) <class 'tuple'>
14 ([11, 22, 33, 44], 'dy', 'aa', 'bb', 'cc') <class 'tuple'>

 

 

实例2、将列表里面的每一个元素,都将转化到元祖的元素里面:(可接收“,”的类型)
 
def f1(*args):
    print(args,type(args))

li = [11,22,33,44]
f1(*li)

a = "Alex"
f1(*a)


显示结果:
(11, 22, 33, 44) <class 'tuple'>
('A', 'l', 'e', 'x') <class 'tuple'>

注意:实际是按照每个元素做了一次for 循环

 

 

二、  ** : **kwargs:把N个关键字参数转换成字典额方式。
在传值的时候,只能用“key:value”的方式进行传值
 
实例1、必须指定一个key=value作为字典中的key:value
def f1(**kwargs):
    print(kwargs,type(kwargs))

f1(n1="alex",n2=18)

{'n2': 18, 'n1': 'alex'} <class 'dict'>

 

实例2:可以结合字典变量传输一个键值对

1 def f1(**kwargs):
2     print(kwargs,type(kwargs))
3 
4 
5 dic = {'k1':'v1','k2':'v2'}
6 f1(kk=dic)
7 
8 
9 {'kk': {'k2': 'v2', 'k1': 'v1'}} <class 'dict'>

 

实例3:直接的赋值,不需要做变动

 1 def f1(**kwargs):
 2     print(kwargs,type(kwargs))
 3 
 4 
 5 dic = {'k1':'v1','k2':'v2'}
 6 f1(**dic)
 7 f1(dic)
 8 
 9 
10 {'k2': 'v2', 'k1': 'v1'} <class 'dict'>
11 Traceback (most recent call last):
12   File "D:/软件/pychar/data/day3/test.py", line 22, in <module>
13     f1(dic)
14 TypeError: f1() takes 0 positional arguments but 1 was given
15 
16 
17 注意:如果不加**传值变量时就会报错。

 

 
三、万能参数:
实例1:一个星的在前面,两个星的在后面
 
 1 def f1(*args,**kwargs):
 2     print(args)
 3     print(kwargs)
 4 
 5 f1(11,22,33,44,k1="v1",k2="v2")
 6 
 7 
 8 显示结果:
 9 (11, 22, 33, 44)
10 {'k2': 'v2', 'k1': 'v1'}

 

 
 
 
 
 
 
 
 
posted @ 2017-12-14 02:01  风之岚翔  阅读(647)  评论(0编辑  收藏  举报