《像计算机科学家一样思考Python》——3.11 有返回值函数和无返回值函数

3.11 有返回值函数和无返回值函数

我们使用过的函数中,有一部分函数,如数学函数,会产生结果。因为没有想到更好的名字,我称这类函数为有返回值函数(fruitful function)。另一些函数,如print_twice,会执行一个动作,但不返回任何值。我们称这类函数为无返回值函数(void function)。

当你调用一个有返回值的函数时,大部分情况下都想要对结果做某种操作。比如,你可能会想把它赋值给一个变量,或者用在一个表达式中:

x = math.cos(radians)
golden = (math.sqrt(5) + 1) / 2

在交互模式中调用函数时,Python会直接显示结果:

>>> math.sqrt(5)
2.2360679774997898

但是在脚本中,如果只是直接调用这类函数,那么它的返回值就会永远丢失掉!

math.sqrt(5)

这个脚本计算5的平方根,但由于并没有把计算结果存储到某个变量中,或显示出来,所以其实没什么实际作用。

无返回值函数可能在屏幕上显示某些东西,或者有其他的效果,但是它们没有返回值。如果你试着把它们的结果赋值给某个变量,则会得到一个特殊的值None。

>>> result = print_twice('Bing')
Bing
Bing
>>> print result
None

值None和字符串'None'并不一样。它是一个特殊的值,有自己独特的类型:

>>> print type(None)
<type 'NoneType'>

到目前为止,我们自定义的函数都是无返回值函数。再过几章我们就会开始写有返回值的函数了。

时间: 2024-11-10 05:19:00

《像计算机科学家一样思考Python》——3.11 有返回值函数和无返回值函数的相关文章

《像计算机科学家一样思考Python(第2版)》——1.5 值和类型

1.5 值和类型 值(value)是程序操作的最基本的东西,如一个字母或者数字.前面我们见过一些值,如2.42``.0以及'Hello,World!'. 这些值属于不同的类型(type):2是整型(integer)的,42``.0是浮点型(floating-point)的,而'Hello,World!'是字符串(string)类型的,这么称呼是因为它是由一堆字母"串连"起来的. 如果不确认一个值的类型,解释器可以告诉你: >>> type(2) <class '

《像计算机科学家一样思考Python》——导读

前 言 本书的奇特历史 1999年,我正在为一门Java的编程入门课程备课.这门课我已经教过3个学期,感到有些灰心.课程的不及格率太高,即使是那些及格的学生,也只获得了很低的成就. 我发现问题之一是教材.它们太厚,有太多冗余的细节,而针对编程技巧的高阶的指导却很不足.并且学生们都受着"陷阱效应"的苦恼:开头时很容易,也能循序渐进,但接着在第5章左右,整个地板就突然陷落了.新资讯来得太多.来得太快,以至于我必须花费一学期剩下的全部时间来帮助他们拾回丢失的片段. 开课前两周,我决定自己来编

《像计算机科学家一样思考Python(第2版)》——第1章 程序之道 1.1 什么是程序

第1章 程序之道 本书的目标是教会你像计算机科学家一样思考.这种思考方式综合了数学.工程学以及自然科学的一些最优秀的特性.计算机科学家与数学家类似,他们使用形式语言来描述理念(特别是计算):与工程师类似,他们设计产品,将元件组装成系统,对不同的方案进行评估选择:与自然科学家类似,他们观察复杂系统的行为,构建科学假说,并检验其预测. 作为计算机科学家,最重要的技能就是问题求解.问题求解是发现问题.创造性地思考解决方案以及清晰准确地表达解决方案的能力.实践证明,学习编程的过程,正是训练问题求解能力的

《像计算机科学家一样思考Python(第2版)》——导读

前 言 本书以培养读者以计算机科学家一样的思维方式来理解Python语言编程.贯穿全书的主体是如何思考.设计.开发的方法,而具体的编程语言,只是提供了一个具体场景方便介绍的媒介. 全书共21章,详细介绍Python语言编程的方方面面.本书从最基本的编程概念开始讲起,包括语言的语法和语义,而且每个编程概念都有清晰的定义,引领读者循序渐进地学习变量.表达式.语句.函数和数据结构.书中还探讨了如何处理文件和数据库,如何理解对象.方法和面向对象编程,如何使用调试技巧来修正语法错误.运行时错误和语义错误.

《像计算机科学家一样思考Python》——3.5 添加新函数

3.5 添加新函数 至此,我们都只是在使用Python提供的函数,其实我们也可以自己添加新的函数.函数定义指定新函数的名称,并提供一系列程序语句.当函数被调用时,这些语句会顺序执行. 下面是一个例子: def print_lyrics(): print "I'm a lumberjack,and I'm okay." print "I sleep all night and I work all day." def是关键字,表示接下来是一个函数定义.这个函数的名称是

《像计算机科学家一样思考Python》——3.16 练习

3.16 练习 练习3-3 Python提供了一个内置函数len,返回一个字符串的长度.所以len('allen')的值是5. 编写一个函数right_justify,接收一个字符串形参s,并打印出足够的前导空白,以达到最后一个字符显示在第70列上. >>> right_justify('allen') allen 练习3-4 函数对象是一个值,你可以将它赋值给变量,或者作为实参传递.例如do_twice是一个函数,接收一个函数对象作为实参,并调用它两次: def do_twice(f)

《像计算机科学家一样思考Python》——4.11 术语表

4.11 术语表 实例(instance):一个集合中的一员.本章中的TurtleWorld是TurtleWorlds集合中的一员. 循环(loop):程序中的一个片段,可以重复执行. 封装(encapsulation):将一组语句转换为函数定义的过程. 泛化(generalization):将一些不必要的具体值(如一个数字)替换为合适的通用参数或变量的过程. 关键词参数(keyword argument):调用函数时,附带了参数名称(作为一个"关键词"来使用)的参数. 接口(inte

《像计算机科学家一样思考Python(第2版)》——1.9 练习

1.9 练习 练习 1-1 在计算机前阅读本书是一个好主意,因为你可以边看边试验书中的示例. 每当你试验新的语言特性时,应当试着故意犯错.例如,在"Hello,World!"程序中,如果少写一个引号,会发生什么?如果两个引号都不写,会怎么样?如果把print拼写错了,会如何? 这种试验会帮你记住所读的内容,也能帮你学会调试,因为这样能看到不同的出错消息代表着什么.现在故意犯错总比今后在编码中意外出错好. 在print语句中,如果漏掉一个括号,或者两个都漏掉,会发生什么? 如果正尝试打印

《像计算机科学家一样思考Python(第2版)》——1.8 术语表

1.8 术语表 问题求解(problem solving):总结问题.寻找解决方案以及表达解决方案的过程. 高级语言(high-level language):设计来方便人们读写的编程语言,如Python. 低级语言(low-level language):设计来方便计算机执行的编程语言,也被称为"机器语言"或"汇编语言". 可移植性(portability):程序的一种属性:可以在多种类型的计算机上运行. 解释器(interpreter):一个读取其他程序并执行其