>>> 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()
函数被调用,带两个参数,1
和 9
。
它求值为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
,它表示没有值。 None
是
NoneType
数据类型 的唯一值(其他编程语言可能称这个值为 null
、nil
或 undefined
)。 就像布尔值 True
和 False
一样,None
必须大写首字母 N
。
如果你希望变量中存储的东西不会与一个真正的值混淆,这个没有值的值就可
能有用。有一个使用 None
的地方就是 print()
的返回值。
print()
函数在屏幕上显示文 本,但它不需要返回任何值,这和 len()
或 input()
不同。但既然所有函数调用都需要 求值为一个返回值,那么
print()
就返回 None
。要看到这个效果,请在交互式环境中
输入以下代码。
>>> spam = print('Hello!')
>>> None == spam
Hello!
True
在幕后,对于所有没有 return
语句的函数定义, Python都会在末尾加上
return None
。 这类似于 while
或 for
循环隐式地以
continue
语句结尾。而且,如果使用不 带值的 return
语句(也就是只有 return
关键字本身),那么就返回 None
。