此文章为Python基础知识点(从入门到实践)-- 函数,此节Python基础知识点主要包括:定义函数、传递实参、返回值、传递列表、传递任意数量的实参、将函数存储在模块中、函数编写指南。
文章目录
一、定义函数
函数定义:首先用关键字def来告诉python,要定义一个函数,向python指出了函数名,还可能在圆括号内指出函数。 先展示一个最简单函数结构在示例中函数名为greet,不需要任何信息就能工作,因此括号是空的,最后以冒号进行结尾。例子如下:
def greet():
"""显示简单的问候语"""
print('Hello!')
greet()
紧跟在 def greet(): 后面的所有缩进构成了函数体。第二行的文本被称为文档字符串(docstring)的注释,描述了函数是作什么的。文档字符串用三引号括起,Python使用他们来生成有关程序中函数的文档。
代码行第三行 print("Hello!") 是函数体内的唯一一行代码,因此greet只做一项工作:打印Hello!。
要使用这个函数就可调用它。函数调用让python执行函数的代码。要调用函数,可依此指定函数名以及用圆括号括起的必要信息,如最后一行代码。由于这个函数不需要任何的信息,调用他时只需输入 greet() 即可。
运行结果如下:
1.1 向函数传递信息
只需要稍微修改,就可让函数greet()不仅向用户显示Hello!,还将用户的名字作为抬头。为此,可在函数定义的括号内添加username。通过在这里添加username,可让函数接受你给username指定的任何值。现在,这个函数要求你调用它时给username指定一个值。调用greet()时,可将一个名字传递给它。代码如下:
def greet(username):
"""显示简单的问候语"""
print(f'Hello!{username.title()}!')
greet('jess')
运行结果如下:
1.2 实参和形参
在前面例子中,在函数定义中,变量username是一个形参,即函数完成工作所需的信息。而在调用函数代码中 'jess' 是一个实参,即调用函数时传递给函数的信息。调用函数时,将要让函数使用的信息放在圆括号内。在 greet('jess')中,将实参 'jess' 传递给了函数 greet(),这个值被赋给了形参username。
二、传递实参
函数定义中可能包含多个形参,因此函数调用中也可能包含多个实参。向函数传递实参的方式很多:可使用位置实参,这要求实参的顺序与形参的顺序相同;也可使用关键字实参,其中每个实参都由变量名和值组成;还可使用列表和字典。下面依次介绍这些方式。
2.1 位置实参
调用函数时,python必须将函数调用中的每个实参都关联到函数定义中的一个形参。为此,最简单的关联方式是基于实参的顺序。这种关联方式称为位置实参。宠物函数代码如下:
def describe_pet (animal_type,animal_age):
"""显示宠物的信息"""
print(f'I have a {animal_type}')
print(f'It is {animal_age} years old.')
describe_pet('cat',16)
运行结果如下:
2.2 关键字实参
关键字实参是传递给函数的名称值对。因为直接在实参中将名称和值关联起来,所以向函数传递实参时不会混淆。关键字实参让你无需考虑函数调用中的实参顺序,还清楚的指出了函数调用中各个值的用途。宠物函数代码如下:
def describe_pet (animal_type,animal_age):
"""显示宠物的信息"""
print(f'I have a {animal_type}')
print(f'It is {animal_age} years old.')
describe_pet(animal_age=15,animal_type='cat')
运行结果如下:
(注意:使用关键字实参时,务必准确的指出函数定义中的形参名。)
2.3 默认值
编写函数时,可给每个形参指定默认值。在调用函数中给形参提供了实参时,Python将使用指定的实参值;否则,给形参指定默认值后,可在函数调用中省略相应的实参。使用默认值可简化函数调用,还可清楚的指出函数的典型用法。宠物函数代码例子如下: