>;>;>; f100 # write the result
[1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89]
和以前一样,这个例子演示了一些新的Python功能:
mq110 回复于:2005-05-31 16:54:44
4.7 深入函数定义
有时需要定义参数个数可变的函数。有三个方法可以做到,我们可以组合使用它们。
4.7.1 参数默认值
最有用的形式是给一个或多个参数指定默认值。这样创建的函数可以在调用时使用更少的参数。
def ask_ok(prompt, retries=4, complaint='Yes or no, please!'):
while True:
ok = raw_input(prompt)
if ok in ('y', 'ye', 'yes'): return 1
if ok in ('n', 'no', 'nop', 'nope'): return 0
retries = retries - 1
if retries < 0: raise IOError, 'refusenik user'
print complaint
这个函数还可以用以下的方式调用:ask_ok('Do you really want to quit?'),或者像这样:ask_ok('OK to overwrite the file?', 2)。
默认值在函数定义段被解析,如下所示:
i = 5
def f(arg=i):
print arg
i = 6
f()
will print 5.
重要警告:默认值只会解析一次。当默认值是一个可变对象,诸如链表、字典或大部分类实例时,会产生一些差异。例如,以下函数在后继的调用中会积累它的参数值:
def f(a, L=[]):
L.append(a)
return L
print f(1)
print f(2)
print f(3)
这会打印出:
[1]
[1, 2]
[1, 2, 3]
如果你不想在不同的函数调用之间共享参数默认值,可以如下面的实例一样编写函数:
def f(a, L=None):
if L is None:
L = []
L.append(a)
return L
4.7.2 参数关键字
函数可以通过参数关键字的形式来调用,形如“keyword = value”。例如,以下的函数:
def parrot(voltage, state='a stiff', action='voom', type='Norwegian Blue'):
print "-- This parrot wouldn't", action,
print "if you put", voltage, "Volts through it."
print "-- Lovely plumage, the", type
print "-- It's", state, "!"
上一页 1 2 3 4 5 6 7 8 9 10 11 12 13 14 1516 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 下一页
| 论坛热门帖子: | [lch203] 写得蛮好的linux学习笔记(10-21) [黑马制造] 学习java的30个目标(10-19) [笑傲股林] 做测试半年了,有点迷茫,应该再学些什么提高自己的测试水平和测试能力呢?(10-19) [udp8589] 大家用google的来吱一声? 用百度的~~也来报道下?(10-18) [沂偌掳兆] 本人总结的一些认为C++比较经典的书籍,希望对大家有用(10-18) |
| TAG标签: | 指南 一个 可以 Python 模块 文件 方法 函数 对象 字符串 |
注册
个人空间
