在讲Python变量前,了解一下Python内部运行的环节:

   Python代码到机器码,中间经过了解析器和PVM

    解析器:对Python代码进行了编译,编译成字节码的内容,字节码以*.pyc结尾

    PVM:字节码再编译成机器码,

      

Python哑变量回归分析_下划线

 

1.    Python的概念层级

    概念层级即程序

    表达式:创建、处理对象

    语句:建立在表达式之上

    模块:语句太多,放到一起形成模块

    程序:模块也不止一个,

2.    变量

    Python的变量前面没有写类型,类型由实际类型值决定

    

Python哑变量回归分析_内存地址_02

变量概述

    变量名:a和name

    对象:具体的值,如20.0  ‘Tom’

    系统类型:Python系统内部维护的类型

    引用:a指向Tom的箭头就是引用,

    Python数据类型只与对象有关 与变量名无关

变量的创建

    第一次赋值的时候创建,以后可以改变类型

      创建规则

        包含字母、数字、下划线,

        只能以字母或下划线开头,

        不能有空格,

        尽量避免Python关键字或函数名

                  简短且有描述性

        区分特殊符号,1,l,0,o

    Python变量名建议下划线分割

变量的类型

    变量无类型约束

    类型取决于关联变量

变量的使用

    用type(name)查看变量类型

    用id(name)查看放在内存哪里

       

Python哑变量回归分析_Python哑变量回归分析_03

垃圾回收

    Python自动释放未被引用的对象

    内部原理依据对象引用计数器统计的数值

    举例:变量a先引用20,然后再引用Jerry,那么对象20就会成为被回收的内容,垃圾回收GC会回收20  (一般情况下)变量有计数器 counter=0时可以回收

     

Python哑变量回归分析_Python_04

    

Python哑变量回归分析_Python哑变量回归分析_05

共享引用:

    简单理解就是多个变量引用一个对象

           细节:判断字面值是否相等,==

         判断内存地址是否一样,is

                Python中256以下整数,已被python缓存,目的提高效率

    例子1:共享引用一般举例——让a和b同时引用Jerry,查看内存地址id()值一样

     

Python哑变量回归分析_Python_06

Python哑变量回归分析_Python哑变量回归分析_07

    例子2:共享引用小整数20——age和score的id()值一样

     

Python哑变量回归分析_内存地址_08

    例子3:共享引用大整数3100——内存地址不一样

    

Python哑变量回归分析_下划线_09

    解释原因

      说明一点:Python3中int是无限的只要内存能支持整数可以无限大,所以3100内存不一致不是因为整数大小有关。

        程序语言中定义数据类型都是为了便于程序,如方便我们合理利用内存。

        Python处理机制,认为我们经常会用到一些小的数字,以256为界限,256以下的值在内存中都有一份,所以上面20都是一个内存地址而3100为两个内存地址

        如果我们想查看20在内存中有多少次被引用呢,可以调用一个模块的方法,sys(system的简写) 用import sys导入该模块,下面有一个方法sys.getrefcount(20)

         

Python哑变量回归分析_下划线_10