表达式与序列
大约 3 分钟
表达式与序列
print(print('What happend?'))
让我们重新看看发生了什么:
- python 读取到
print(print('What happend?')),这是一个表达式。- 计算
print(print('What happend?')),发现需要先算出print('What happend?')。- 计算
print('What happend?'),在屏幕上输出What happend?,并得到None。
- 计算
- 计算
print(None),在屏幕上输出None,并得到None。
- 计算
- 最外层没有东西了,返回的
None被忽略(丢弃)。
这样就很清楚了,过程和我们教程一开始分析的数学表达式几乎一致,只是中间多了些副作用。
还有一个问题……None是什么?
调用print(...)时,print会把输入的内容打印到屏幕上,然后什么都不返回(这很符合直觉)
在 python 中,函数如果什么都没返回就运行结束了,就默认得到None,它是和0类似的值,意味着什么都没有
我们可以显式地将它表达出来
print(None)
我们之前定义的函数都是没有返回值的,所以它们的返回值都是None
def area_of_a_rectangle(a, b):
print(a*b)
print(area_of_a_rectangle(1, 2))
如果我们想要返回一个值,可以使用return语句,
这样我们就能够构造出更有用的函数了,
事实上,这才是函数的真正用法。
def square(a):
return a ** 2
print(1 + square(3))
return 会结束函数的调用,并且将它后面的表达式的值,作为这次函数调用的值返回
一旦 return ,后面的内容不会被执行了,因为函数已经返回了
def square(a):
print('start!')
return a ** 2
print('end!')
print(square(2))
python 执行了什么?
- 注释和空白行会跳过
- 没有返回值但是可以执行的,一般占一行,称为
语句def=return- 更多……
- 有返回值的,可以嵌套,称为
表达式11+1(2 * 3)1 + (2 * 3)"awa"nameprintprint('awa')- 更多……
事实上,语句并不是必要的,经过恰当的语言设计,整个程序可以被写成一整个表达式
让程序运行的过程就是表达式求值的过程
现代大多数语言中都包括语句和表达式这两种东西,单纯是历史遗留问题
试试这个,它看起来就是一个计算圆的面积的函数
PI = 3.1415926
s = 0
def area_of_a_circle(radius):
'''计算圆的面积'''
s = PI * radius**2
area_of_a_circle(2)
print(s)
等等,为什么报错了?
递归
Powered by Waline v3.0.0-alpha.10