且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

《像计算机科学家一样思考Python》——3.8 形参和实参

更新时间:2022-09-27 09:35:59

本节书摘来自异步社区《像计算机科学家一样思考Python》一书中的第3章,第3.8节,作者[美]Allen B. Downey,赵普明 译,更多章节内容可以访问云栖社区“异步社区”公众号查看。

3.8 形参和实参

我们已经看到,有些内置函数需要传入参数。比如,当调用math.sin时,需要传入一个数字作为实参。有的函数需要多个实参:math.pow需要两个,分别是基数(base)和指数(exponent)。

在函数内部,实参会被赋值给形参。下面的例子是一个用户自定义的函数,接收一个实参:

def print_twice(bruce):
   print bruce
   print bruce

这个函数在调用时会把实参的值赋到形参bruce上,并将其打印两次。

这个函数对任何可以打印的值都可用。

>>> print_twice('Spam')
Spam
Spam
>>> print_twice(17)
17
17
>>> print_twice(math.pi)
3.14159265359
3.14159265359

内置函数的组合规则,在用户自定义函数上也同样可用,所以我们可以对print_twice使用任何表达式作为实参:

>>> print_twice('Spam '*4)
Spam Spam Spam Spam
Spam Spam Spam Spam
>>> print_twice(math.cos(math.pi))
-1.0
-1.0

作为实参的表达式会在函数调用之前先执行。所以在这个例子中,表达式'Spam'*4和math.cos(math.pi)都只执行一次。

你也可以使用变量作为实参:

>>> michael = 'Eric, the half a bee.'
>>> print_twice(michael)
Eric, the half a bee.
Eric, the half a bee.

作为实参传入到函数的变量的名称(michael)和函数定义里形参的名称(bruce)没有关系。函数内部只关心形参的值,而不用关心它在调用前叫什么名字;在print_twice函数内部,大家都叫bruce。