前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >1分钟掌握 Python 函数参数

1分钟掌握 Python 函数参数

作者头像
1480
发布2019-07-14 06:27:40
3160
发布2019-07-14 06:27:40
举报
文章被收录于专栏:数据分析1480数据分析1480

任何编程语言函数都是非常重要的一部分,而在进行函数调用时,了解函数的参数传递方式是非常有必要的。Python中支持哪些传参方式呢?

Python中的传参方式是比较灵活的,主要包括以下六种:

  • 按照位置传参
  • 按照关键字传参
  • 默认参数
  • 元组传参
  • 字典传参
  • 综合传参

按照位置传参

顾名思义,实参与形参数目一致,并且是按照位置一一对应的。

代码语言:javascript
复制
def func(a, b):
    return a+b*2

当调用函数func(1,2)时,则按照a=1,b=2的方式形参与实参对应,返回结果为5。

按照关键字传参

这种方式在调用函数时既传实参,也传形参。因而,不需要根据位置对应了,位置可以颠倒:

代码语言:javascript
复制
def func(a, b):
    return a+b*2

当调用函数func(b=1,a=2)时,则按照b=1,a=2的方式形参与实参对应,匹配的方式是关键字而非位置,返回结果为4。

默认参数

默认参数必须放在前两类参数之后,在调用函数的时候可以传参,也可以不传。不传则采用默认的参数值。

代码语言:javascript
复制
def func(a, b, c = 3):
    return a+b*2+c

其中,c为默认参数。当通过func(1,2)调用函数时,c的取值为默认值3,函数的执行结果为8;当通过func(1,2,5)调用函数时,c的取值为实参值5,函数的执行结果为10。

元组传参

传入的参数以元组的形式呈现,长度不限,可以通过元组的访问方式依次访问各个入参:

代码语言:javascript
复制
def func(*args):
    for eacharg in args:
        print ('tuple arg:', eacharg)

调用方式如下:func('I', 'Love', 'Python')

调用结果为:

代码语言:javascript
复制
tuple arg: I
tuple arg: Love
tuple arg: Python

字典传参

传入的参数以字典的形式呈现,长度不限,可以通过字典的访问方式依次访问各个入参:

代码语言:javascript
复制
def func(**kwargs):
    for eachkwarg in kwargs.keys():
        print('Dict Arg', eachkwarg, ':', kwargs[eachkwarg])

调用方式如下:

func(English_name = 'PythonUser', Chinese_name= 'Python用户')

调用结果为:

代码语言:javascript
复制
Dict Arg English_name : PythonUser
Dict Arg Chinese_name : Python用户

综合传参

是以上几种传参方式的综合。实际上,大家从上面的例子也可以发现,元组传参和字典传参已经能够满足大部分传参场景。所以,通常所的综合传参指的是这两种的组合,大家在源码中也经常会发现它们的身影:

代码语言:javascript
复制
def func(*args,**kwargs):
    for eacharg in args:
        print('tuple arg:', eacharg)

    for eachkwarg in kwargs.keys():
        print('Dict Arg', eachkwarg, ':', kwargs[eachkwarg])

调用示例为:

func('I', 'Love', 'Python', English_name = 'DA1480', Chinese_name= '数据分析1480')

调用结果为:

代码语言:javascript
复制
tuple arg: I
tuple arg: Love
tuple arg: Python
Dict Arg Chinese_name : DA1480
Dict Arg English_name : 数据分析1480
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-02-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 数据分析1480 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档