书籍:《Python编程:从入门到实践》
打卡人:Owenli
打卡日期:2018.4.14
Python从入门到实践目录
- Python学习笔记之基本数据类型|第1篇
- Python学习笔记之列表|第2篇
- Python学习笔记之条件控制|第3篇
- Python学习笔记之字典|第4篇
- Python学习笔记之用户输入和While循环|第5篇
- Python学习笔记之函数|第6篇
- Python学习笔记之函数(续)|第7篇
- Python学习笔记之类|第8篇
- Python学习笔记之类(续)|第9篇
- Python学习笔记之文件和异常(上)|第10篇
- Python学习笔记之文件和异常(下)|第11篇
前言
本篇学习编写函数。函数是带名字的代码块,用于完成具体的工作。
函数让程序的编写、阅读、测试和修复变的容易,极大提高了代码的复用性。
本篇中,你还会学习向函数传递信息的方式。你将学习如何编写主要任务是显示信息的函数,还有用于处理数据并返回一个或一组值的函数。最后,你将学习如何 将函数存储在被称为模块 的独立文件中,让主程序文件的组织更为有序。
一、定义函数
简单的函数,定义greet_user()
:
这是一个最简单基本的函数。
def
是Python
定义函数的关键字,greet_user
函数名,冒号后面的所有缩进行构成函数体。"""xxx"""
是文档字符串的注释。要使用函数只需指定函数名和括号中的必要信息即可。
我们可以给上面的函数添加一个参数username
。
通过修改上面
greet_user
添加一个参数,在调用函数时,将参数放在括号中传入。
函数的参数username
是形参。在调用函数是传递的内容是实参。
二、传递实参
函数定义可能包含多个形参,因此函数调用中也可能包含多个实参。向函数传递实参的方式很多,例如:位置实参,实参和形参的顺序相同。关键字实参,其中实参都由变量名和值组成。还有字典和列表等。
2.1 位置实参
位置实参:每个实参根据顺序关联一个形参。
举个例子:
describe_pet('hanster', 'harry')
两个实参分别对应def describe_pet(animal_type, animal_name):
中的形参。
describe_pet()
可以多次使用。
注意实参的顺序不能改变。
2.2 关键字实参
关键字实参 是传递给函数的名称-值对。直接将实参和形参关联起来。
上边例子看出,顺序对关键字实参没影响。
2.3 默认值
编写函数时,可以给形参指定默认值。当调用函数提供实参时,使用指定的实参。否则,使用默认值。
你可能会遇到黄色框中问题。为
animal_type
指定了默认值。调用函数传递的实参被视为位置实参,默认的会指定给第一个形参,所以会报错。
三、返回值
函数并非总是直接输出值,它可以处理一些数据,并返回一个或一组值。return
语句将值返回到调用函数的代码行。
例子:
函数中将
full_name
返回给调用者。调用函数时需要提供一个变量,来存储返回的值。
函数可以返回任何类型的值,包括字典和列表等较复杂的数据结构。
四、传递列表
有时向函数传递列表很有用,通过将列表传递给函数,函数可以直接访问内容。
将
usernames
作为参数传递给函数。
可以在函数中修改列表的值
在函数
print_models
修改completed_models
列表的值。列表的内容被永久性修改。
如何禁止函数修改列表,其实很简单,只需要传递列表的副本给函数即可。 还记得list_name[:]
生成副本。
传递任意数量的实参
有时不知道需要接受多少个实参,Python
允许从调用语句中收集任意数量的实参。
在
Python
使用*toppings
创建一个空元组,并将接收到的所有值都封装到这个元组中。
小结
本篇学习了函数的基本用法,如何定义一个函数、实参和形参、返回值、参数列表等。
打卡第六次