zoukankan      html  css  js  c++  java
  • 变量及变量内存管理

     1.变量的定义,什么是变量?

        量:衡量/记录现实世界中的状态,让计算机能够像人一样去识别世间万物。(很抽象,可以简单理解为一种状态)
    变:现实世界中的状态是会发生改变的。

    2.为什么要有变量?
    因为程序执行的本质就是一系列状态的变化。比如MOBA类游戏,游戏运行时会有经济,人数的变化。这些变化的量就是变量。

    3.定义变量分为三部分:
    ①·变量值    我们存放的数据,用于记录现实生活中状态。
    ②·赋值符号   赋值。
    ③·变量名    用来引用变量值,但凡调用变量值,就要通过变量名。

    4.变量名的命名规范
    大前提:变量名的命名应该能反映变量值的记录状态。(容易识别,别人看到你的变量名就会知道他是用来记录什么类型的变量值)
    变量名只能是数字,字母,下划线的任意组合(变量名不能以数字开头)
    关键字不能声明为变量名。关键字查看:help(“keywords”)

    5.变量名的两种命名风格
    ①·驼峰体 AgeOfOldboy
    ②·下划线 age_of_oldboy (为了和常量区分开,一般下划线命名会使用小写字母+下划线+数字)

    6.常量
    常量就是不变的量,不存在状态变化。
    python语法里没有强制性去定义常量,都是约定俗成,用全大写+下划线取命名常量。
    C语言里一旦定义了常量,则常量不能修改。

    7.python的内存管理
    有个引用计数的概念:变量值被引用的次数。
    比如x = 10 变量值读入到内存,内存会分配一块空间给10.变量名x指向这个地址,此时这个地址可以通过x来调用,引用计数为1.
    y = x x赋值给y,y也指向10所在的内存地址,通过y也可以调用10,引用计数为2.
    x = 11 内存给11分配一块空间并且x解除和10之间的联系,引用计数减1,变成1.
    del y 接触y与10之间的联系,不能通过y来调用10,10这个变量值的引用计数为0.10这块内存相当于变成了一个垃圾内存,不能被调用。
    引用计数为0,变量值不能被调用,就变成了垃圾,python的垃圾回收机制会定义回收这些垃圾。c语言需要自己手动释放这些内存。

    id() python解释器内置的方法。每一个变量值都有其内存地址,id()是用来反映变量值在内存中的位置。内存地址不同则id不同。

    内存每分配给一个变量值一个内存地址,就是一个新的id,不管变量值是否相等。
    在IDE里,两个值相同,内存地址也相同(两个本应该独立的内存地址为什么id会相同?)。但是在交互式环境里,超过一定大小的值id值则不同,这个才符合内存地址的定义。
    为什么IDE里,两个变量值id会相同,是因为IDE里有个优化的机制,如果你两个变量值相同,内存会自行处理优化,
    不需要经过cpu再重新处理一次(因为两个值相同),节省一点时间,程序运行更快。

    8.定义变量的三个特征

    id()
    print(id(x))

    type()
    print(type(x))


    print(x)

    总结:
    1、id相等,值一定相等
    2、值相等,id却不一定一样




  • 相关阅读:
    数位dp模板
    HDU
    hdu 2586 How far away ? ( 离线 LCA , tarjan )
    POJ 1655 Balancing Act( 树的重心 )
    HDU 2196 Computer( 树上节点的最远距离 )
    HDU 5266 pog loves szh III ( LCA + SegTree||RMQ )
    HDU 5265 pog loves szh II
    2015区域赛起航
    2015GDCPC广东省赛总结
    SGU 521 North-East ( 二维LIS 线段树优化 )
  • 原文地址:https://www.cnblogs.com/Roc-Atlantis/p/9093160.html
Copyright © 2011-2022 走看看