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 , 请确保函数调用与函数定义相匹配 .
来源: https://juejin.im/post/5c8da8b15188257e826abbc6