函数定义
函数是可重用的代码,可以在程序中任何地方调用。我们使用这个语法来定义函数:
def function(parameters): instructions return value
def 关键字告诉 Python,我们有一段可重用的代码(函数)。一个程序可以有很多函数。
示例
我们可以调用函数(参数)的功能。
#!/usr/bin/python def f(x): return x*x print f(3)
输出结果:
9
该函数具有一个参数,x。返回值是函数的返回值。并非所有的函数都有返回值。我们可以通过传递多个变量:
#!/usr/bin/python def f(x,y): print 'You called f(x,y) with the value x = ' + str(x) + ' and y = ' + str(y) print 'x * y = ' + str(x*y) f(3,2)
输出:
You called f(x,y) with the value x = 3 and y = 2 x * y = 6
作用域
变量只能实现它们所限定的区域,这就是所谓的作用范围。下面示例中将无法正常工作:
#!/usr/bin/python def f(x,y): print 'You called f(x,y) with the value x = ' + str(x) + ' and y = ' + str(y) print 'x * y = ' + str(x*y) z = 4 # cannot reach z, so THIS WON'T WORK z = 3 f(3,2)
但是,这将:
#!/usr/bin/python def f(x,y): z = 3 print 'You called f(x,y) with the value x = ' + str(x) + ' and y = ' + str(y) print 'x * y = ' + str(x*y) print z # can reach because variable z is defined in the function f(3,2)
让我们来进一步看看:
#!/usr/bin/python def f(x,y,z): return x+y+z # this will return the sum because all variables are passed as parameters sum = f(3,2,1) print sum
在函数中调用函数
我们还可以从另外一个函数获取变量的内容:
#!/usr/bin/python def highFive(): return 5 def f(x,y): z = highFive() # we get the variable contents from highFive() return x+y+z # returns x+y+z. z is reachable becaue it is defined above result = f(3,2) print result
变量不能的范围(作用域)之外。下面的例子是行不通的。
#!/usr/bin/python def doA(): a = 5 def doB(): print a # does not know variable a, WILL NOT WORK! doB()
但这个例子使用外部参数可以运行:
#!/usr/bin/python def doA(): a = 5 def doB(a): print a # we pass variable as parameter, this will work doB(3)
在最后的例子中,我们有一个名为 a 的两个不同的变量,因为变量 a 的范围是仅在函数。 该变量没有范围之外不会被知道。
该函数 doB() 将打印 3(传递给它的值)。分配 a = 5 包含在函数 doA() 内但不被使用,除函数 doA() 本身之内,并不可见在函数 doB() 或代码的其余部分。
如果一个变量可以到达代码的任何位置被称为:全局变量。如果一个变量只作用在一定范围内,我们称之为:局部变量。