专栏首页数据分析14801分钟掌握 Python 函数参数

1分钟掌握 Python 函数参数

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

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

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

按照位置传参

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

def func(a, b):
    return a+b*2

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

按照关键字传参

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

def func(a, b):
    return a+b*2

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

默认参数

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

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。

元组传参

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

def func(*args):
    for eacharg in args:
        print ('tuple arg:', eacharg)

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

调用结果为:

tuple arg: I
tuple arg: Love
tuple arg: Python

字典传参

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

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

调用方式如下:

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

调用结果为:

Dict Arg English_name : PythonUser
Dict Arg Chinese_name : Python用户

综合传参

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

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')

调用结果为:

tuple arg: I
tuple arg: Love
tuple arg: Python
Dict Arg Chinese_name : DA1480
Dict Arg English_name : 数据分析1480

本文分享自微信公众号 - 数据分析1480(lsxxx2011),作者:蓝色波浪

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-02-04

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Python绘图还在用Matplotlib?out了 !发现一款手绘可视化神器!

    今天,给大家介绍一个很酷的 Python 手绘风格可视化神包:cutecharts。

    1480
  • 【干货】推荐19款最常用的数据挖掘工具

    数据在当今世界意味着金钱。随着向基于app的世界的过渡,数据呈指数增长。然而,大多数数据是非结构化的,因此需要一个过程和方法从数据中提取有用的信息,并将其转换为...

    1480
  • (一)拨开生活中的数字迷雾,警惕数据的陷阱

    数据是客观的,但数据的搜集和解释是带着目的的,是主观的。同时数据也总是不完整的,只代表了历史,而且只是事物的某一个片段,同时数据会随着时间和空间的变化而所传达的...

    1480
  • 代码审计之PHPWIND

    漏洞位置出现在插件模板上传安装位置对应的源码位置为applications/appcenter/admin/AppController.php

    天钧
  • 小甲鱼《零基础学习Python》课后笔记(十、十一):一个打了激素的数组——列表1

    2.append() 方法和 extend() 方法都是向列表的末尾增加元素,请问他们有什么区别?

    小火柴棒
  • C# 命令行如何静默调用 del 删除文件

    如果在 C# 命令行调用 del 删除文件,很多时候会提示是否需要删除,本文告诉大家如何调用命令行的时候静默删除

    林德熙
  • 38条技巧优化PHP代码(总结)

    2、echo的效率高于print,因为echo没有返回值,print返回一个整型;

    猿哥
  • 微软Enterprise Library 4.0将支持依赖注入

    下一个微软Enterprise Library的版本——V4——将预置支持依赖注入。依赖注入将通过容器以独立或作为库的一部分来提供。 特别值得一提的是,下一个E...

    张善友
  • 【paterzheng(郑礼雄)】每个阶段都去尝试做一些改变

    ‍ ? paterzheng(郑礼雄),2004年加入腾讯,运营老兵一枚,先后在计费领域和数据领域从事研发及运营工作,他自我介绍说本是开发出身,被人误导转做运...

    TEG云端专业号
  • golang错题集

    为什么呢?是不是有点诧异? 输出的都是“annei”,而“annei”又是“names”的最后一个元素,那么也就是说程序打印出了最后一个元素的值,而name对于...

    李海彬

扫码关注云+社区

领取腾讯云代金券

玩转腾讯云 有奖征文活动