跟着我学Python基础篇:01.初露端倪
跟着我学Python基础篇:02.数字与字符串编程
跟着我学Python基础篇:03.选择结构
跟着我学Python基础篇:04.循环
函数是有名字的一系列指令。你输入参数,函数会得到一个对应的结果。而中间得到这个结果的细节,就好像被封印在了函数内部这个黑盒子中。
编写函数时,我们需要:
把这些信息和保留字def放到一起,组成函数定义的第一行:
def name(parameter):
这叫作函数的头部,接下来,说明函数体,函数体包含函数被调用时要执行的指令,一个函数是一个复合语句,要求函数体内部的语句缩进到同样的层次。
我们举一个计算立方体体积的函数的例子:
def cubeVolume(sideLength):
volume=sideLength**3
return volume
我们已经知道如何编写一个函数了,但是,当我们需要调用这个函数的时候,我们就需要考虑地更多。
为了测试这个函数,我们的程序应该包括:
def cubeVolume(sideLength):
volume=sideLength**3
return volume
result1=cubeVolume(2)
result2=cubeVolume(10)
print(result1)
print(result2)
编写一个或多个函数的程序时,你需要注意函数的定义和调用语句的顺序。
读取源代码时,Python解释器依次读取每个函数定义和每个语句。函数定义中的语句在函数被调用之前不会被执行。另一方面,函数定义之外的语句再遇到时会立刻执行,所以,在调用之前定义每一个函数是非常重要的。
在定义和使用函数时,把所有的语句都放在函数中并且指定一个函数作为入口点,这是一个非常好的编程习惯。
我们提供一种风格的注释供读者参考:
## Computes the volume of a cube
# @param sideLength the length of a side of the cube
# @return the volume of the cube
#
注释的每一行以“#”开始,使用两个“#”开始的第一行描述函数的目的,每个“@param字句描述一个形参变量”,“@return”字句描述返回值。
这种风格的注释是从Java语言借鉴而来,得到了大量文档工具的支持。
在这一部分,我们来近距离了解一下何为参数。当一个函数被调用时,用来接收函数实参的变量被创建,这些变量称为形参变量,也有的叫形式参数,调用函数时提供给函数的这些值是本次调用的实参,或者叫做实际参数。每个形参变量使用对应的实参进行初始化。
这提示我们:
尽量不要在函数体中修改形参变量,这可能会造成意想不到的错误。
在Python中,一个函数永远不能修改作为实参传递过来的变量的内容。
我们使用return来指定函数的结果,处理return语句时,函数立刻退出。一些程序员不喜欢一个函数中使用多个return,可以把函数的结果保留在一个变量中,然后最后返回。
有时候,我们会需要执行一系列不产生值的指令,如果那个指令会出现多次,我们会考虑把它封装为一个函数。
实际上,这种函数返回一个特殊值,None,但是我们不能对这个值做任何事情。
一个变量的作用域是指能够访问他的代码范围,例如,函数形参变量的作用域是整个函数。
在函数中定义的变量叫做局部变量,如果局部变量是在一个代码块中定义的,那么它从定义的位置开始到所在函数结束的代码中都是可以访问的。
python也支持全局变量:函数之外定义的变量。
全局变量对于之后定义的所有函数都是可见的,任何想修改全局变量的函数都必须包含一个global声明。
递归计算通过使用同样对问题但输入更简单的解决方案来解决问题,为了让递归能够结束,必须有最简单的输出特例。
让我们用递归来实现打印一个三角形:
def main():
printTriangle(4)
def printTriangle(sideLength):
if sideLength<1:return
printTriangle(sideLength-1)
print("[]"*sideLength)
main()