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 , 请确保函数调用与函数定义相匹配 。