>>> from env_helper import info; info()
页面更新时间: 2024-01-19 23:29:54
运行环境:
    Linux发行版本: Debian GNU/Linux 12 (bookworm)
    操作系统内核: Linux-6.1.0-17-amd64-x86_64-with-glibc2.36
    Python版本: 3.11.2

3.2. 函数返回值和 return 语句

如果调用 len() 函数,并向它传入像 'Hello' 这样的参数,函数调用就求值为整数5。 这是传入的字符串的长度。一般来说,函数调用求值的结果,称为函数的“返回值”。

3.2.1. 使用 return 返回值

def 语句创建函数时,可以用 return 语句指定应该返回什么值。 return 语句包 含以下部分:

  • return 关键字;

  • 函数应该返回的值或表达式。

如果在 return 语句中使用了表达式,返回值就是该表达式求值的结果。例如, 下面的程序定义了一个函数,它根据传入的数字参数,返回一个不同的字符串。在 文件编辑器中输入以下代码,并保存为 magic8Ball.py:

>>> import random
>>>
>>> def getAnswer(answerNumber):
>>>     if answerNumber == 1:
>>>         return 'It is certain'
>>>
>>>     elif answerNumber == 2:
>>>         return 'It is decidedly so'
>>>
>>>     elif answerNumber == 3:
>>>         return ' Yes '
>>>
>>>     elif answerNumber== 4:
>>>         return ' Reply hazy try again'
>>>
>>>     elif answerNumber == 5:
>>>         return 'Ask again later'
>>>
>>>     elif answerNumber == 6:
>>>
>>>         return 'Concentrate and ask again '
>>>
>>>     elif answerNumber == 7:
>>>         return 'My reply is no'
>>>
>>>     elif answerNumber == 8:
>>>         return 'Outlook not so good '
>>>
>>>     elif answerNumber == 9:
>>>         return 'Very doubtful'
>>>
>>> r = random.randint(1, 9)
>>>
>>> fortune = getAnswer(r)
>>>
>>> print(fortune)
It is certain

在这个程序开始时, Python首先导入 random 模块 。 然后 getAnswer() 函数被定义。因为函数是被定义(而不是被调用), 所以执行会跳过其中的代码。接下来, random.randint() 函数被调用,带两个参数,19 。 它求值为1和9之间的一个随机整数(包括1和9), 这个值被存在一个名为 r 的变量中。

getAnswer() 函数被调用,以 r 作为参数。 程序执行转移到 getAnswer() 函数的 顶部, r 的值被保存到名为 answerNumber 的变量中。 然后,根据 answerNumber 中的值, 函数返回许多可能字符串中的一个。程序执行返回到程序底部的代码行, 即原来调用 getAnswer() 的地方。 返回的字符串被赋给一个名为 fortune 变量,然 后它又被传递给 print() 调用,并被打印在屏幕上。

请注意,因为可以将返回值作为参数传递给另一个函数调用,所以你可以将下 面3行代码

>>> r = random.randint(1, 9)
>>>
>>> fortune = getAnswer(r)
>>>
>>> print(fortune)
It is decidedly so

缩写成一行等价的代码:

>>> print(getAnswer(random.randint(1, 9)))
It is decidedly so

记住,表达式是值和操作符的组合。函数调用可以用在表达式中,因为它求值 为它的返回值。

3.2.2. None

在 Python 中有一个值称为 None ,它表示没有值。 NoneNoneType 数据类型 的唯一值(其他编程语言可能称这个值为 nullnilundefined )。 就像布尔值 TrueFalse 一样,None 必须大写首字母 N

如果你希望变量中存储的东西不会与一个真正的值混淆,这个没有值的值就可 能有用。有一个使用 None 的地方就是 print() 的返回值。 print() 函数在屏幕上显示文 本,但它不需要返回任何值,这和 len()input() 不同。但既然所有函数调用都需要 求值为一个返回值,那么 print() 就返回 None 。要看到这个效果,请在交互式环境中 输入以下代码。

>>> spam = print('Hello!')
>>> None == spam
Hello!
True

在幕后,对于所有没有 return 语句的函数定义, Python都会在末尾加上 return None 。 这类似于 whilefor 循环隐式地以 continue 语句结尾。而且,如果使用不 带值的 return 语句(也就是只有 return 关键字本身),那么就返回 None