打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Python--函数传参

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

 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 argument14 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 05 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) # 113     print(args) # (2, 3, 4, 5)14     print(type(args)) # <class 'tuple'>15     print(args[1]) # 316     return 017 test1(1,2,3,4,5)18 19 # 实参*[列表]的使用20 def test2(a,*args):21     print(a) # 122     print(args) # (2, 3, 4, 5, {'a': 1})23     print(type(args)) # <class 'tuple'>24     print(args[1]) # 325     return 026 test2(*[1,2,3,4,5],{"a":1}) # *[1,2,3,4,5] = 1,2,3,4,527 28 # **kwargs将多余的关键字参数变成了一个字典29 def test3(a,**kwargs):30     print(a) # 131     print(kwargs) # {'b': 2, 'c': 3, 'd': 4, 'e': 5}32     print(type(kwargs))  # <class 'dict'>33     print(kwargs["c"]) # 334     return 0 35 test3(a=1,b=2,c=3,d=4,e=5)36 37 # 实参**字典的使用38 def test4(a,**kwargs):39     print(a) # 140     print(kwargs) # {'b': 2, 'c': 3, 'd': 4}41     print(type(kwargs))  # <class 'dict'>42     print(kwargs["c"]) # 343     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) # tj52     print(age) # 253     print(args) # (1, 3)54     print(kwargs) # {'b': 2, 'c': 18}55     return 056 test5("tj", 2, 1, 3, b=2, c=18)

 

来源:https://www.icode9.com/content-1-699201.html
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
python中的组包与解包
Python入门很难?别担心,找对方法!函数基础知识送给你们
《源码探秘 CPython》57. 函数是怎么创建的?
12步轻松搞定python装饰器
理解 Python 装饰器看这一篇就够了 – 码农网
HTML5教程:精讲__init__、__new__、__call__方法(可面试用)
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服