L'E

言必虑其所终!

导航

Python学习笔记(十一)函数参数

调用函数时可使用的正式参数类型:

1、普通参数(严格按照顺序,将实际参数赋值给形式参数)

2、默认参数(必须放置在参数列表的最后)

3、制定参数(将实际参数赋值给指定的形式参数)

4、动态参数:*(一个*表示在传递参数时,传递的所有参数都会被当作一个元素存放进元组中)

    (传递的参数前面带一个*时,表示将该参数拆分开,将其拆分的字符分别作为一个元素存放进元组中)

 1 >>> def f1(*args):
 2 ...     print(args)
 3 ...
 4 >>> lis = ['l1', 's2', 1]
 5 
 6 >>> f1(lis,'ww')
 7 (['l1', 's2', 1], 'ww')
 8 
 9 >>> f1(*lis,'ww')
10 ('l1', 's2', 1, 'ww')

5、动态参数**(传递参数时,必须以指定参数的形式传递,参数会被解释称键值对保存在字典中)

(传递参数前面带**时,表示将该参数(必须要是字典)按原键值对保存进字典)

1 >>> def f2(**args):
2 ...     print(args)
3 ...
4 >>> f2(d1='lz')
5 {'d1': 'lz'}
6 >>> dic = {'x1':11, 'x2':'zwa', 'x3':'op'}
7 >>> f2(**dic)
8 {'x3': 'op', 'x1': 11, 'x2': 'zwa'}

6、万能参数(一个*一定要放在前面)

 1 >>> lis = [1,2,3,4]
 2 >>> dic = {'a1':11, 'a2':22, 'a3':33}
 3 >>> f3(lis,dic)
 4 ([1, 2, 3, 4], {'a2': 22, 'a1': 11, 'a3': 33}) {}
 5 >>> f3(*lis,dic)
 6 (1, 2, 3, 4, {'a2': 22, 'a1': 11, 'a3': 33}) {}
 7 >>> f3(*lis,**dic)
 8 (1, 2, 3, 4) {'a2': 22, 'a1': 11, 'a3': 33}
 9 >>> f3(lis,d1=11,d2=33)
10 ([1, 2, 3, 4],) {'d1': 11, 'd2': 33}
11 >>> f3(*lis,d1=11,d2=33)
12 (1, 2, 3, 4) {'d1': 11, 'd2': 33}

 

必备参数须以正确的顺序传入函数。调用时的数量必须和声明时的一样。

调用函数,你必须传入一个参数,不然会出现语法错误:

 1 >>> def u1(str):
 2 ...     print(str)
 3 ...     return
 4 ...
 5 >>> u1()
 6 Traceback (most recent call last):
 7   File "<stdin>", line 1, in <module>
 8 TypeError: u1() missing 1 required positional argument: 'str'
 9 >>> u1('good')
10 good

 

关键字参数和函数调用关系紧密,函数调用使用关键字参数来确定传入的参数值。

使用关键字参数允许函数调用时参数的顺序与声明时不一致,因为 Python 解释器能够用参数名匹配参数值。

以下实例在函数调用时使用参数名:

1 >>> def p1(str):
2 ...     print(str)
3 ...     return
4 ...
5 >>> p1(str='ok')
6 ok
1 >>> def p2(name,age):
2 ...     print(name)
3 ...     print(age)
4 ...     return
5 ...
6 >>> p2(age=21,name='eric')
7 eric
8 21

 

调用函数时,缺省参数的值如果没有传入,则被认为是默认值。下例会打印默认的age,如果age没有被传入:

 1 >>> def p3(name,age=27):
 2 ...     print(name)
 3 ...     print(age)
 4 ...     return
 5 ...
 6 >>> p3(age=21,name='lz')
 7 lz
 8 21
 9 >>> p3(name='lzj')
10 lzj
11 27

 

posted on 2016-09-07 21:23  L'E  阅读(128)  评论(0编辑  收藏  举报