1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70
| 1. 基本传参 把数据用参数的形式输入到函数,被称为参数传递.
//以位置形式来确认传入的参数 def print_arg(a,b,c): """print args""" print(a,b,c)
//以关键字形式来确认传入的参数 def print_arg(b=2,a=3,c=1): """print args""" print(a,b,c)
//混合使用 def print_arg(b,a=2,c=1): """print args""" print(a,b,c)
2. 包裹传参 包裹传参的意思是传递任意个参数(参数不明确)
//包裹传参,以位置形式来传入参数,返回结果为元组 def print_arg(*args): """print args""" print(args)
//包裹传参,以关键字形式来传入参数,返回结果为字典 def print_arg(**args): """print args""" print(args)
//包裹传参,混合使用 def print_arg(*arg,**args): """print args""" print(arg) print(args)
综上,包裹传参和基本参数混合使用,它们的先后顺序为: 位置 -> 关键字 -> 包裹位置 -> 包裹关键字
[root@smallasa ~]# cat test.py #!/usr/bin/env python # -*- coding:utf-8 -*-
def print_arg(a,b,*c,**d): """print args""" print(a,b,c,d)
print_arg(1,2,3,4,e=1,f=2) [root@smallasa ~]# python test.py (1, 2, (3, 4), {'e': 1, 'f': 2})
3. 解包裹 包裹传递使用'*'和'**'用于函数定义,同时'*'和'**'还可以用于函数调用 注意: 包裹传参和解包裹不是相反操作,而是两个相对独立的功能
//解包裹,以位置形式传递,返回的是元组 def print_arg(a,b,c): "print args" print(a,b,c) args = (1,2,3) print_arg(*args)
//解包裹,以关键字形式传递,返回的是元组 def print_arg(a,b,c): "print args" print(a,b,c) args = {"a":1,"b":2,"c":3} print_arg(**args)
综上,解包裹用于函数调用,它们的先后顺序为: 位置 -> 关键字 -> 解包裹位置 -> 解包裹关键字
|