美文网首页
Python参数传递和一些坑

Python参数传递和一些坑

作者: 逸筱幻 | 来源:发表于2018-04-24 11:18 被阅读0次
    Python 中的参数传递模式是共享传参
    def add(a, b):
        a += b
        return a 
    
    x = 1
    y = 2
    
    //调用加法
    add(a, b)
    
    print(a)//此时输出的值为1
    

    如果可变对象作为默认值的话,会导致一些问题

    class List:
      def __init__(self, list = []):
        self.list = list
    
    a = List()
    b = List()
    
    a.list// -> []
    b.list// -> []
    
    a.list.append(1)
    a.list// -> [1]
    b.list// -> [1]
    //此时b 跟 a 引用了同一个列表
    

    建议不要使用可变类型作为参数的默认值

    如何解决上面的问题?

    class List:
        def __init(self, list = None):
            if list is None:
                self.list = []
            else:
                self.list = list
    

    相关文章

      网友评论

          本文标题:Python参数传递和一些坑

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