《Python学习手册》学习笔记(16)之第16章函数基础(关键词:编程语言/Python)
来源:互联网 发布:企业网站cms 编辑:程序博客网 时间:2024/06/05 05:12
第16章 函数基础
为何使用函数
编写函数
(读者笔记:
- def创建了一个对象并将其赋值给某一变量名。当Python运行到def语句时,它将会生成一个新的函数对象并将其赋值给这个函数名。就像索引的赋值一样,函数名变成了某一个函数的引用。函数对象可以赋值给其他的变量名,保存在列表之中。
- yield向调用者发回一个结果对象,但是记住它离开的地方。像生成器这样的函数也可以通过yield语句来返回值,并挂起它们的状态以便稍后能够恢复状态。
- global声明了一个模块级的变量并被赋值。为了分配一个可以在整个模块中都可以使用的变量名,函数需要在global语句中将它列举出来。通常情况下,变量名往往需要关注它的作用域(也就是说变量存储的地方),并且是通过实赋值语句将变量绑定至作用域的。
- nonlocal声明了将要赋值的一个封闭的函数变量。Python3.0中添加的nonlocal语句允许一个函数来赋值一条语法封闭的def语句的作用域中已有的名称。这就允许封闭的函数作为保留状态的一个地方——当一个函数调用的时候,信息被记住了——而不必使用共享的全局名称。
- 函数是通过赋值(对象引用)传递的。在Python中,参数通过赋值传递给了函数(使用对象引用)。Python的模式中,调用者以及函数通过引用共享对象,但是不需要别名。改变函数中的参数名并不会改变调用者中给的变量名,但是改变传递的可变对象可以改变调用者共享的那个对象。
)
def语句
一个没有返回值的函数自动返回了none对象,但是这个值是往往被忽略掉的。
def语句是实时执行的
第一个例子:定义和调用
定义
调用
(读者:
在def运行之后,可以在程序中通过在函数名后增加括号调用(运行)这个函数。括号中可以包含一个或多个对象参数,这些参数将会传递(赋值)给函数头部的参数名。
)
Python中的多态
(读者:
这种依赖类型的行为称为多态。其含义就是一个操作的意义取决于被操作对象的类型。例如:print、index、*操作符。
)
第二个例子:寻找序列的交集
定义
(读者:
# intersectDemo.pydef intersect(seq1, seq2): res = [] for x in seq1: if x in seq2: res.append(x) return res
)
调用
(读者:
$ python2Python 2.7.12 (default, Nov 19 2016, 06:48:10) [GCC 5.4.0 20160609] on linux2Type "help", "copyright", "credits" or "license" for more information.>>> from intersectDemo import intersect>>> s1 = 'SPAM'>>> s2 = 'SCAM'>>> intersect(s1, s2)['S', 'A', 'M']
)
重访多态
本地变量
(读者:
实际上,所有的在函数内部进行赋值的变量名都默认为本地变量。
)
本章小结
本章习题
习题解答
参考文献:
1.《Python学习手册》。
- 《Python学习手册》学习笔记(16)之第16章函数基础(关键词:编程语言/Python)
- 《Python学习手册》学习笔记(32)之第32章异常基础(关键词:编程语言/Python/异常)
- 《Python学习手册》学习笔记(2)之第2章Python如何运行程序(关键词:编程语言/Python)
- 《Python学习手册》学习笔记(4)之第4章介绍Python对象类型(关键词:编程语言/Python)
- 《Python学习手册》学习笔记(10)之第10章Python语句简介(关键词:编程语言/Python/语句)
- 《Python学习手册》学习笔记(19)之第19章函数的高级话题(关键词:编程语言/Python/函数/递归函数/匿名函数)
- 《Python学习手册》学习笔记(19)之第19章函数的高级话题(关键词:编程语言/Python/递归函数/匿名函数)
- 《Python学习手册》学习笔记(1)之第1章问答环节(关键词:编程语言/Python)
- 《Python学习手册》学习笔记(3)之第3章如何运行程序(关键词:编程语言/Python)
- 《Python学习手册》学习笔记(5)之第5章数字(关键词:编程语言/Python/数字/整数/进制)
- 《Python学习手册》学习笔记(7)之第7章字符串(关键词:编程语言/Python/字符串)
- 《Python学习手册》学习笔记(18)之第18章参数(关键词:编程语言/Python/参数)
- 《Python学习手册》学习笔记(21)之第21章模块:宏伟蓝图(关键词:编程语言/Python/模块)
- 《Python学习手册》学习笔记(33)之第33章异常编码细节(关键词:编程语言/Python/异常)
- 《Python学习手册》学习笔记(22)之第22章模块代码编写基础(关键词:编程语言/Python/模块/import/from)
- 《Python学习手册》学习笔记(26)之第26章类代码编写基础(关键词:编程语言/Python/OOP/面向对象/类)
- 《Python学习手册》学习笔记(8)之第8章列表与字典(关键词:编程语言/Python/列表/字典)
- 《Python学习手册》学习笔记(11)之第11章赋值、表达式和打印(关键词:编程语言/Python/赋值/表达式/打印)
- java提高篇(14)--ByteArrayInputStream和ByteArrayOutputStream类用法
- 《Python学习手册》学习笔记(15)之第15章文档(关键词:编程语言/Python/文档/文档字符串/PyDoc)
- html/jQuery获取窗口宽度/高度
- Codeforces Round #439 (Div. 2) A-C题解
- STM32之IO输出方式理解
- 《Python学习手册》学习笔记(16)之第16章函数基础(关键词:编程语言/Python)
- 【实战】4-5 IDEA、maven等配置及初始化web空白项目
- 使用ZooKeeper实现Java跨JVM的分布式锁(优化构思)
- Codeforces Round #439 B
- JAVA提高篇(15)--PipedOutputStream和PipedInputStream类用法
- c写文件
- 实习的一些感想
- 《Python学习手册》学习笔记(17)之第17章作用域(关键词:编程语言/Python/作用域/global/nonlocal)
- 用py-faster-rcnn训练自己的VOC数据集