美文网首页Python 随笔
The default values of Defining F

The default values of Defining F

作者: 淌水希恩 | 来源:发表于2019-07-26 14:08 被阅读0次

    The default values are evaluated at the point of function definition in the defining scope, so that

    i = 5
    
    def f(arg=i):
        print(arg)
    
    i = 6
    f()  # will print 5
    

    Important warning: The default value is evaluated only once. This makes a difference when the default is a mutable object such as a list, dictionary, or instances of most classes. For example, the following function accumulates the arguments passed to it on subsequent calls:

    def f(a, L=[]):
        L.append(a)
        return L
    
    print(f(1))
    print(f(2))
    print(f(3))
    
    # This will print
    [1]
    [1,2]
    [1,2,3]
    

    If you don't want the default to be shared between subsequent calls, you can write the function like this instead:

    def f(a, L=None):
        if L is None:
            L = []
        L.append(a)
        return L
    

    相关文章

      网友评论

        本文标题:The default values of Defining F

        本文链接:https://www.haomeiwen.com/subject/gbgrrctx.html