《Python学习手册》学习笔记(16)之第16章函数基础(关键词:编程语言/Python)

第16章 函数基础

为何使用函数

编写函数

(读者笔记:
- def创建了一个对象并将其赋值给某一变量名。当Python运行到def语句时,它将会生成一个新的函数对象并将其赋值给这个函数名。就像索引的赋值一样,函数名变成了某一个函数的引用函数对象可以赋值给其他的变量名,保存在列表之中。
- yield向调用者发回一个结果对象,但是记住离开的地方。像生成器这样的函数也可以通过yield语句来返回值,并挂起它们的状态以便稍后能够恢复状态
- global声明了一个模块级变量并被赋值。为了分配一个可以在整个模块中都可以使用的变量名,函数需要在global语句中将它列举出来。通常情况下,变量名往往需要关注它的作用域(也就是说变量存储的地方),并且是通过实赋值语句将变量绑定至作用域的。
- nonlocal声明了将要赋值的一个封闭的函数变量。Python3.0中添加的nonlocal语句允许一个函数赋值一条语法封闭的def语句的作用域中已有的名称。这就允许封闭的函数作为保留状态的一个地方——当一个函数调用的时候,信息被记住了——而不必使用共享的全局名称。
- 函数是通过赋值对象引用传递的。在Python中,参数通过赋值传递给了函数(使用对象引用)。Python的模式中,调用者以及函数通过引用共享对象,但是不需要别名。改变函数中的参数名并不会改变调用者中给的变量名,但是改变传递的可变对象可以改变调用者共享的那个对象。

这里写图片描述

这里写图片描述

def语句

一个没有返回值函数自动返回none对象,但是这个值是往往被忽略掉的。

def语句是实时执行的

第一个例子:定义和调用

定义
调用

(读者:
在def运行之后,可以在程序中通过在函数名后增加括号调用(运行)这个函数。括号中可以包含一个或多个对象参数,这些参数将会传递(赋值)给函数头部的参数名。

Python中的多态

(读者:
这种依赖类型行为称为多态。其含义就是一个操作意义取决于被操作对象类型。例如:print、index、*操作符。

第二个例子:寻找序列的交集

定义

(读者:

# intersectDemo.py

def intersect(seq1, seq2):
    res = []
    for x in seq1:
        if x in seq2:
            res.append(x)
    return res

调用

(读者:

$ python2
Python 2.7.12 (default, Nov 19 2016, 06:48:10) 
[GCC 5.4.0 20160609] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> from intersectDemo import intersect
>>> s1 = 'SPAM'
>>> s2 = 'SCAM'
>>> intersect(s1, s2)
['S', 'A', 'M']

重访多态
本地变量

(读者:
实际上,所有的在函数内部进行赋值的变量名都默认为本地变量。

这里写图片描述

本章小结

本章习题

习题解答

参考文献:
1.《Python学习手册》。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值