说说在 Python 中如何向函数传参

1 位置实参

位置实参指的是,实参的顺序与形参相同。

def to_read(book_name, book_type):
    '''想读的书'''
    print('我想读《' + book_name + '》咯')
    print('它属于' + book_type + '领域')

to_read('现代艺术150年 : 一个未完成的故事','艺术')

运行结果:

我想读《现代艺术150年 : 一个未完成的故事》咯
它属于艺术领域

注意: 使用位置实参时,参数的顺序很重要。

2 关键字实参

关键字实参指的是:传递给函数的是 “名称-值对” 。这样在调用函数时就不用考虑实参顺序咯, 而且还可以清楚地指出实参各个值的用途。

def to_read(book_name, book_type):
    '''想读的书'''
    print('我想读《' + book_name + '》咯')
    print('它属于' + book_type + '领域')

to_read(book_name='现代艺术150年 : 一个未完成的故事',book_type='艺术')

运行结果:

我想读《现代艺术150年 : 一个未完成的故事》咯
它属于艺术领域

注意: 使用关键字实参时, 必须准确地指出定义中的形参名。

3 默认值

可以给每个形参指定默认值 。 如果在调用函数时,有给形参提供实参, 那么将使用指定的实参值; 如果没有,那么将使用默认值。

使用默认值可以简化函数调用的方式, 而且还可清楚地指明函数的典型用法。

def to_read(book_name, book_type='艺术'):
    '''想读的书'''
    print('我想读《' + book_name + '》咯')
    print('它属于' + book_type + '领域')

to_read(book_name='现代艺术150年 : 一个未完成的故事')
to_read('现代艺术150年 : 一个未完成的故事')
to_read('现代艺术150年 : 一个未完成的故事','艺术史')

运行结果:

我想读《现代艺术150年 : 一个未完成的故事》咯
它属于艺术领域
我想读《现代艺术150年 : 一个未完成的故事》咯
它属于艺术领域
我想读《现代艺术150年 : 一个未完成的故事》咯
它属于艺术史领域

注意: 在使用默认值时, 函数的形参列表必须先列出没有默认值的形参, 然后再列出有默认值的实参。这样可以让函数也支持位置实参。

可以混合使用位置实参、 关键字实参以及默认值等传参方式。建议使用对我们来说最容易理解的传参方式。

4 传参错误

如果我们在调用函数时,提供的实参多于或少于函数定义的信息时,就会抛出实参不匹配错误。 形如:TypeError: to_read() missing 1 required positional argument: 'book_name'

出现类似的 traceback , 请确保函数调用与函数定义相匹配 。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 函数和对象 1、函数 1.1 函数概述 函数对于任何一门语言来说都是核心的概念。通过函数可以封装任意多条语句,而且...
    道无虚阅读 10,159评论 0 5
  • 关于译者:这是一个流淌着沪江血液的纯粹工程:认真,是 HTML 最坚实的梁柱;分享,是 CSS 里最闪耀的一瞥;...
    iKcamp阅读 5,357评论 0 2
  • 函数只定义一次,但可能被执行或调用任意次。JS函数是参数化的,函数的定义会包括一个称为形参的标识符列表,这些参数在...
    PySong阅读 2,642评论 0 0
  • 第5章 函数和函数式编程 5.1 引言函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。函数...
    VIVAFT阅读 4,542评论 0 5
  • 函数只定义一次,但可能被执行或调用任意次。JS函数是参数化的,函数的定义会包括一个称为形参的标识符列表,这些参数在...
    PySong阅读 4,306评论 0 0