配置参数

  • 特色:金贝 QZ-1000 石英灯 连续光源摄影灯摄像灯 常亮灯太阳灯 婚纱
    艺术写真

查看完整参数>>

>>> def func(x, y, z=0, *args, **kwargs):

9

x = 1

11

…     sum = 0

y = 2

12

 File “”, line 1

SyntaxError: non-default argument follows default argument

[‘END’, ‘END’, ‘END’]

… for i in numbers:

比如,定义一个包含上述四种参数的函数:

Python: 函数参数魔法

SyntaxError: non-default argument follows default argument

1

8

z = 3

2

4

>>> add(*b)                  # 对元组一样适用

>>> def add(x, y):        # x, y 是必选参数

6

2

5

函数参数

…     print x + y

2016-12-01

3

… sum = 0

>>> add(x=1)         # x=1 => kwargs={‘x’: 1}

10

>>> add(1)                # 只传了一个,也不行

args = ()

[‘END’, ‘END’]

5

11

kwargs = {}

>>> add_to_list()                   #
没有传递参数,使用默认值,也没啥问题

8

8

>>> add(1, 2)               # 没有传递 z,自动使用 z=1,即
1+2+1

7

1

…     for i in numbers:

让我们看看例子:

3

15

我们还可以通过下面的形式来传递参数:

6

0

*args 表示可变参数,**kwargs 表示关键字参数。

y = 2

>>> def add(x, y=1, z):      # y
是默认参数,必须放在所有必选参数的后面

4

必选参数

Traceback (most recent call last):

6

3

默认参数

>>> a = [1, 2]

1

2

6

z = 3

6

4

2

3

args 和 *kwargs · Python进阶

z = 3

>>> add(*a)                  # 使用 *a,相当于上面的做法

10

… return sum

可变参数

numbers: (1, 2, 3)

1

12

10

11

5

x = 1

1

3

为啥呢?我们在调用函数的时候没有传递参数,那么就默认使用
L=[],经过处理,L 应该只有一个元素,怎么会出现调用函数两次,L
就有两个元素呢?

z = 3

>>> add(1, 2, 3)            # 1+2+3

7

11

5

2

>>> def add(**kwargs):

9

>>> sum()                            # 没有参数

z = 4

8

   return kwargs

3

1

23

…     print x + y + z

{}

>>> add(1)          # 传递 1 个参数

默认参数

6

再看一个例子:

12

… return x + y + z

   print ‘z =’, z

…     print ‘numbers:’, numbers

3

8

   print ‘kwargs =’, kwargs

4

>>> func(1, 2, 3, 4, 5, 6)         # x=1, y=2, z=3, args=(4,
5, 6), kwargs={}

3

7

…     return x + y + z

>>> add(1, 2)       # 传递 2 个参数

5

6

1

2

*args 和 **kwargs 是 Python 的惯用写法。

   print ‘y =’, y

10

7

…         sum += i

kwargs = {‘u’: 6, ‘v’: 7}

kwargs = {‘u’: 6, ‘v’: 7}

>>> add(x=1, y=2)    # x=1, y=2 => kwargs={‘y’: 2, ‘x’: 1}

1

27

>>> dict1 = {‘x’: 1}

10

11

关键字参数

{‘x’: 1}

20

6

x = 1

7

默认参数是指在定义函数的时候提供一些默认值,如果在调用函数的时候没有传递该参数,则自动使用默认值,否则使用传递时该参数的值。

参数组合

6

kwargs = {}

>>> sum(**dict2)                     # 相当于 sum(x=2, y=6)

x = 1

4

25

2

8

1

4

3

>>> b = {‘u’: 6, ‘v’: 7}

>>> a = [1, 2, 3, 4]

8

1

6

… return x + y + z

>>>

在实际的使用中,我们经常会同时用到必选参数、默认参数、可变参数和关键字参数或其中的某些。但是,需要注意的是,它们在使用的时候是有顺序的,依次是必选参数、默认参数、可变参数和关键字参数。

{‘y’: 2, ‘x’: 1}

15

4

y = 2

z = 0

在某些情况下,我们在定义函数的时候,无法预估函数应该制定多少个参数,这时我们就可以使用可变参数了,也就是,函数的参数个数是不确定的。

5

3

3

…     return x + y + z

>>> def add_to_list(L=[]):

>>> add(dict1[‘x’], dict1[‘y’], dict1[‘z’])    #
这样传参很累赘

9

>>> add()                 # 啥都没传,不行

3

7

小结

…    sum += i

args = ()