zoukankan      html  css  js  c++  java
  • Python 引用

    python引用
    python中的数值类型变量也是引用,
    例如:
    a = 100
    b=a
    那么a和b指向同一块内存
    但是当修改a或者b的值得时候,Python会新分配一块内存来存储新的值


    python中不可变类型(不支持修改)是数值类型,字符串类型,元组类型,其中数值和字符串全部都是引用,修改本质上是再开辟一块空间存放新值
    python中可变类型是列表和字典,在字典中,只有不可变类型才能够做key(甚至元组也可以做key)

    #-*- coding:utf-8 -*-
    
    
    num = 100
    
    def update(a):
            a += 10
            print(a)  #打印110
    
    update(num)
    
    print(num)  #打印100
    
    
    '''
    结论:python中所有的变量都是引用类型
    num和update(a),实参num和形参a都指向同一片内存地址
    a += 10
    这里对a做出修改的操作
    
    因为a是数值类型,属于不可变类型,不能修改
    所以,python会创建一个临时变量a,用来存储110
    
    所以print(num) 打印的仍然是100

    注意:当全局变量做实参时,如果全局变量属于不可变类型,那么函数中对全局变量的修改无效

    #-*- coding:utf-8 -*-
    
    #python中+=在可变类型运算中的特殊用法
    
    list = [2]
    
    def test1(num):
            num += num
            print(num)   #打印[2,2]
    
    test1(list)
    
    print(list)   #打印[2,2]
    
    #从结果而言,修改了可变类型的值
    
    print("===================")
    
    list2 = [3]
    
    def test2(num):
            num = num + num  #num+num 的结果是[3,3] 这里表示将[3,3]这个列表赋值给num这个临时变量
            print(num)  #打印[3,3]
    
    test2(list2)
    
    print(list2)  打印[3]
    
    
    '''
    在python中 +=运算符表示对当前变量进行操作
    并不完全等同于  +
  • 相关阅读:
    算法初步——贪心B1020/A1070月饼
    class.forname()用法 转
    java的几种连接池
    java中调用xml的方法:DocumentBuilderFactory
    java中HashMap详解
    使用J2SE API读取Properties文件的六种方法
    java读取properties配置文件信息
    学习(二)
    json入门(二)
    什么是序列化?在什么情况下将类序列化?
  • 原文地址:https://www.cnblogs.com/zhanggaofeng/p/9250433.html
Copyright © 2011-2022 走看看