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却不一定一样




  • 相关阅读:
    【BZOJ 4631】4631: 踩气球 (线段树)
    【BZOJ 4148】 4148: [AMPPZ2014]Pillars (乱搞)
    【LYOI 212】「雅礼集训 2017 Day8」价(二分匹配+最大权闭合子图)
    【BZOJ 4104】 4104: [Thu Summer Camp 2015]解密运算 (智商)
    【BZOJ 4103】 4103: [Thu Summer Camp 2015]异或运算 (可持久化Trie)
    【BZOJ 3747】 3747: [POI2015]Kinoman (线段树)
    【BZOJ 3997】 3997: [TJOI2015]组合数学 (DP| 最小链覆盖=最大点独立集)
    【BZOJ 3727】 3727: PA2014 Final Zadanie (递推)
    【BZOJ 3442】 3442: 学习小组 (最大费用流)
    【BZOJ 3218】 3218: a + b Problem(最小割+可持久化线段树)
  • 原文地址:https://www.cnblogs.com/Roc-Atlantis/p/9093160.html
Copyright © 2011-2022 走看看