首页 > 代码库 > [python 函数学习篇]默认参数

[python 函数学习篇]默认参数

python函数:
默认参数: retries=4 这种形式
    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 really want to quit?)
    给出一个可选的参数: ask_ok(OK to overwrite the file?, 2)
    或者给出所有的参数: ask_ok(OK to overwrite the file?, 2, Come on, only yes or no!)

默认参数的特点:
    重要警告: 默认值只被赋值一次。这使得当默认值是可变对象时会有所不同,比如列表、字典或者大多数类的实例。
    例如,下面的函数在后续调用过程中会累积(前面)传给它的参数:
    

    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

学习网址:

http://docs.pythontab.com/python/python3.4/introduction.html#tut-numbers

[python 函数学习篇]默认参数