Python语言需要注意的几个地方

1.函数的形参默认值

1)python通过def关键字定义函数时,括号中的形参可以设置默认值,这样可以减少调用函数时传入的参数个数,如:
>>> def ask_ok(prompt, retries=4, complaint='Yes or no, please!'):
...     while True:
...         ok = raw_input(prompt)
...         if ok in ('y', 'ye', 'yes'): return True
...         if ok in ('n', 'no', 'nop', 'nope'): return False
...         retries = retries - 1
...         if retries < 0: raise IOError, 'refusenik user'
...         print complaint
...
>>>
>>> ask_ok("Do you have a meeting?")
Do you have a meeting?y
True
>>> ask_ok("Do you have a meeting?",2)
Do you have a meeting?y
True
2)形参的默认值在函数的定义段就被解析,如下图:
>>> i=5
>>> def f(arg=i):
...     print arg
...
>>> i=6
>>> f()
5
3)默认值只会被解析一次,当默认值是可变对象,如链表、字段或者大部分类实例时,会产生一些差异。如下面的实例在函数的调用过程会累积他们的参数值:
>>> def f(a,L=[]):
...     L.append(a)
...     return L
...
>>> print f(1)
[1]
>>> print f(1)
[1, 1]
>>> print f(1)
[1, 1, 1]
如果你不想在不同的函数调用之间共享参数默认值,可以如下面的实例一样编写函数:
def f(a, L=None):
    if L is None:
        L = []
    L.append(a)
    return L





你可能感兴趣的:(Python语言需要注意的几个地方)