ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

Python--函数传参

2020-05-24 13:57:02  阅读:258  来源: 互联网

标签:传参 return 函数 形参 Python args 参数 kwargs print


函数的一般参数(参数个数可确定):

 1 # x、y、z 为形参
 2 def func1(x, y, z):
 3     print("x=%s" % x)
 4     print("y=%s" % y)
 5     print("z=%s" % z)
 6     return 0
 7 # 1、2、3为实参(此处的1、2、3为位置参数,按顺序传给形参,要求实参形参一一对应),实参的数量不得多于形参的数量
 8 a = func1(1, 2, 3)
 9 # x=1、z=3、y=2为关键字参数,与形参位置无关
10 b = func1(x=1, z=3, y=2)
11 # 当同时有位置参数和关键字参数时,位置参数不能写在关键字参数后面,且参数需要一一对应
12 c = func1(1, 2, z=3) #正确示例
13 d = func1(x=1, 2, 3) #错误示例 SyntaxError: positional argument follows keyword argument
14 e = func1(1, 2, x=2) #错误示例 func1() got multiple values for argument 'x'

函数的默认参数:

1 # 此处的port和dbname参数均为默认参数,当调用conn函数未传递给port参数值时,使用默认值3306,当传递参数给默认参数时,使用传入的参数
2 def conn(host, port=2003, dbname="OSRDB"):
3     print("jdbc:oscar://{host_ip}:{PORT}/{DBNAME}......".format(host_ip=host, PORT=port, DBNAME=dbname))
4     return 0
5 conn(host="127.0.0.1",dbname="ECRDB")
6 
7 # >>> jdbc:oscar://127.0.0.1:2003/ECRDB......

函数的参数组:*args和**kwargs

 1 def test(x,y):
 2     print(x)
 3     print(y)
 4     return 0
 5 test(1,2,3) #报错,因为实参多于形参 TypeError: test() takes 2 positional arguments but 3 were given
 6 
 7 # 传递数量不固定的实参时,可以使用带*的形参,即参数组
 8 # 注意参数组要放在位置参数和关键字参数的后面
 9 
10 # *args将多余的位置参数变成了一个元组
11 def test1(a,*args):
12     print(a) # 1
13     print(args) # (2, 3, 4, 5)
14     print(type(args)) # <class 'tuple'>
15     print(args[1]) # 3
16     return 0
17 test1(1,2,3,4,5)
18 
19 # 实参*[列表]的使用
20 def test2(a,*args):
21     print(a) # 1
22     print(args) # (2, 3, 4, 5, {'a': 1})
23     print(type(args)) # <class 'tuple'>
24     print(args[1]) # 3
25     return 0
26 test2(*[1,2,3,4,5],{"a":1}) # *[1,2,3,4,5] = 1,2,3,4,5
27 
28 # **kwargs将多余的关键字参数变成了一个字典
29 def test3(a,**kwargs):
30     print(a) # 1
31     print(kwargs) # {'b': 2, 'c': 3, 'd': 4, 'e': 5}
32     print(type(kwargs))  # <class 'dict'>
33     print(kwargs["c"]) # 3
34     return 0 35 test3(a=1,b=2,c=3,d=4,e=5)
36 
37 # 实参**字典的使用
38 def test4(a,**kwargs):
39     print(a) # 1
40     print(kwargs) # {'b': 2, 'c': 3, 'd': 4}
41     print(type(kwargs))  # <class 'dict'>
42     print(kwargs["c"]) # 3
43     return 0 44 test4(**{"a":1,"b":2,"c":3, "d":4}) # **{"a":1,"b":2,"c":3, "d":4} = {"a":1},{"b":2},{"c":3},{"d":4}
45 
46 
47 # *args和**kwargs同时使用时,
48 # 形参:*args要放在**kwargs前面,
49 # 实参:位置参数放在关键字参数的前面
50 def test5(name, age=18, *args, **kwargs):
51     print(name) # tj
52     print(age) # 2
53     print(args) # (1, 3)
54     print(kwargs) # {'b': 2, 'c': 18}
55     return 0
56 test5("tj", 2, 1, 3, b=2, c=18)

 

标签:传参,return,函数,形参,Python,args,参数,kwargs,print
来源: https://www.cnblogs.com/sunnytomorrow/p/12950432.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有