第八章-函数

 

函数是带名字的代码块,用于完成具体的工作,要执行函数定义的特定任务,可调用该函数。

1、定义函数

关键字def告诉Python要定义一个函数,函数名为greet_user(),最后定义以冒号结尾。

紧跟在def greet_user():后面的所有缩进行构成了函数体。文档字符串用三引号括起来,描述了函数是做什么的,Python使用它们来生成有关程序中函数的文档。

1.向函数传递信息

2.实参和形参

在函数greet_user()的定义中,变量username是一个形参--函数完成其工作所需的一项信息。在代码greet_user('jesse')中,值'jesse'是一个实参。实参是调用函数时传递给函数的信息。

2、传递实参

1.位置实参

调用函数时,实参和形参关联方式基于实参的顺序,称为位置实参。

2.关键字实参

关键字实参是传递给函数的名称-值对。

3.默认值

编写函数时,可给每个形参指定默认值。

使用默认值时,在形参列表中必须先列出没有默认值的形参,再列出有默认值的形参,这让Python依然能够正确的解读位置参数。

4.等效的函数调用

5.避免实参错误

3、返回值

函数并非总是直接显示输出,相反,它可以处理一些数据,并返回一个或一组值。函数返回的值被称为返回值。

1.返回简单值

2.让实参变成可选的

3.返回字典

4.结合使用函数和while循环

4、传递列表

 1.在函数中修改列表

 

2.禁止函数修改列表

要将列表的副本传递给函数,可以像下面这样做:

function_name(list_name[:])

切片表示法[:]创建列表的副本。在上例中如果不想清空未打印的设计列表,可像下面这样调用print_models():

print_models(unprinted_designs[:],completed_models)

5、传递任意数量的参数

有时候,你预先不知道函数需要接受多少个实参,可用形参*name表示

形参名*toppings中的星号让python创建一个名为toppings的空元组,并将收到的所有值都装到这个元祖中。

1.结合使用位置实参和任意数量实参

如果要让函数接受不同类型的实参,必须在函数定义中将接纳任意数量实参的形参放在最后。python先匹配位置实参和关键字实参,再将余家的实参都收集到最后一个形参中。

2.使用任意数量的关键字实参

形参**user_info中的两个星号让python创建一个名为user_info的空字典,并将收到的所有名称-值对都封装到这个字典中。

6、将函数存储在模块中

将函数存储在被称为模块的独立文件中,再将模块导入到主程序中。import语句允许在当前运行的程序文件中使用模块中的代码。

1.导入整个模块

创建pizza模块

导入pizza模块

如果你使用这种import语句导入了名为module_name.py的整个模块,就可使用下面的语法来使用其中任何一个函数:

module_name.function_name()

2.导入特定的函数

你还可以导入函数中特定的函数:

from module_name import function_0,function_1,function_2

3.使用as给函数指定别名

 如果要导入的函数名称可能与程序中现有的名称冲突,或者函数的名称太长,可指定简短而独一无二的别名。

from module_name import function_name as fn

4.使用as给模块指定别名

通过给模块制定简短别名,让你能够更轻松地调用模块中的函数。

import pizza as p

p.make_pizza(16,'pepperoni')

import module_name as mn

posted @ 2019-06-25 10:46  bwzbk  阅读(184)  评论(0编辑  收藏  举报