zoukankan      html  css  js  c++  java
  • 对象变动

    python中可变意味着可以被改动,不可变意味着不能被改动,也就是常量

    foo=['hi']
    print(foo)#['hi']
    
    bar=foo
    bar+=['bye']
    print(foo)#['hi','bye']
    这是因为对象的可变性,每当你将一个变量赋值为另一个可变类型的变量时,对这个数据的任意改动会同时反映到这两个变量上去。新变量只不过是
    老变量的一个别名而已,这个情况只是针对可变数据类型,看例子
    def add_to(num,target=[]):
        target.append(num)
        return target
    
    print(add_to(1))
    print(add_to(2))
    print(add_to(3))

    这是因为列表的可变性,在python中当函数被定义时,默认参数只会运算一次,而不是每次被调用时都会重新计算,所以不要定义可变类型的默认参数

    # 改进版
    def add_to(element,target=None):
        if target is None:
            target=[]
        target.append(element)
        return target
    
    #现在每当你在调用这个函数不传入target参数时,一个新的列表会被创建
    print(add_to(4))
    print(add_to(4))
    print(add_to(4))
  • 相关阅读:
    Java:day11
    Java:day10
    Java:day9
    Java:day8
    纯虚函数和抽象类
    C++的虚拟继承
    派生类构造函数、析构函数的定义和调用次序
    c++的继承方式——公有、保护、私有
    操作系统中系统调用的执行过程
    C++的类
  • 原文地址:https://www.cnblogs.com/z-x-y/p/9182026.html
Copyright © 2011-2022 走看看