此变量非彼变量(python变量)

曾经很是好奇,python的变量怎么这么灵活,既不用声明其类型又可以各种随便赋值,后来深入学习就感觉着实有趣。Python中数字字符串等等都是对象,1是对象,“Hello”也是对象,每个对象都知道自己的类型,每个对象都有一个引用计数器,这个引用计数器是干嘛的呢,加入把对象“hello”赋值给变量a,即:a=”hello” 这样a就是对象“hello”的一个引用,再把a赋值给b,即b=a,那么 a和b就指向同一个对象“hello”

此时hello的引用计数器的值就是2了,python有垃圾回收机制,当引用计数器为0时,对象所占用的内存就会自动释放。当然并不是所有对象都是这样,python有个缓存机制,python会缓存并复用小的整数和小的字符串,例如

>>>a=24

>>>a=”Hello world”

当我们给a从新赋值后,对象24并不会像我们所说的那样被回收,它将可能仍被保存在一个系统表中等待下一次引用,再举一个例子:

>>>a=45

>>>b=45

>>>a is b

True

此时a,b指向的是同一个对象.

>>>a=[‘a’,’b’]

>>>b=[‘a’,’b’]

>>>a is b

false

此时,a,b指向的是不同对象

我们可以使用”is操作符“来进行验证,is操作符是用来检查对象的同一性,如果两个变量名精确的指向同一个对象,就返回True    即a is b

我们也可以向python查询引用次数

>>>import sys

>>>sys.getrefcount(1)

828

输出828次引用,绝大多数是idle系统代码所使用。

时间: 2024-10-14 20:05:24

此变量非彼变量(python变量)的相关文章

python基础(变量,常量,python变量内存管理,变量的三个特征,花式赋值,注释 )

python基础 变量 定义:变量用来描述世间万物变化的状态 组成: 变量名:接收变量值 赋值符号:把变量值赋值给变量名 变量值:就是一个数值 注意: 变量名由数字/字母/下划线组成,不能以数字开头 变量名不能以下关键字命名 ['and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'exec', 'finally', 'for', 'from', 'global',

python变量和作用域

1.作用域介绍 python中的作用域分4种情况: L:local,局部作用域,即函数中定义的变量: E:enclosing,嵌套的父级函数的局部作用域,即包含此函数的上级函数的局部作用域,但不是全局的: G:globa,全局变量,就是模块级别定义的变量: B:built-in,系统固定模块里面的变量,比如int, bytearray等. 搜索变量的优先级顺序依次是:作用域局部>外层作用域>当前模块中的全局>python内置作用域,也就是LEGB. x = int(2.9) # int

Python变量作用域(一)

在一个程序中使用变量名时,Python创建.改变或者查找变量名都是在所谓的命名空间中进行的.作用域指的就是命名空间. Python中的变量名在第一次赋值时已经创建,并且必须经过赋值后才能够使用.由于变量名最初没有声明,Python将一个变量名 被赋值的地点关联为一个特定的命名空间.也即是说,在代码中给一个变量赋值的地方决定了这个变量将存在于哪个命名空间,也 就是它可见的范围. 函数除了打包代码之外,还为程序增加了一个额外的命名空间曾:在默认的情况下,一个函数的所有变量名都是与函数的命名空间 相关

Python 变量之列表与应用技巧

洛琳的笔记 Python 标准数据类型 Python 定义了一些标准数据类型,用于存储各种类型的数据.Python有五个标准的数据类型,分别是: Numbers(数字) String(字符串) List(列表) Tuple(元组) Dictionary(字典) Python 中的变量赋值不需要类型声明,也就是说声明变量不需要使用关键字.Python 中变量赋值之后该变量就被创建.可以简单对单一变量赋值,亦可对同一变量重新赋值(不同数据类型也可以),也可以同时为多个变量赋值,如下. counter

学习python第一篇 python变量

01. 变量定义 在 Python 中,每个变量 在使用前都必须赋值,变量 赋值以后 该变量 才会被创建 等号(=)用来给变量赋值 = 左边是一个变量名 = 右边是存储在变量中的值 变量名 = 值 变量定义之后,后续就可以直接使用了 1) 变量演练1 —— iPython # 定义 qq_number 的变量用来保存 qq 号码 In [1]: qq_number = "1234567" # 输出 qq_number 中保存的内容 In [2]: qq_number Out[2]: '

Python 变量作用域 LEGB

回顾 - Decorator 前篇有讲到了, 闭包和装饰器的概念. 闭包就是, 函数内部嵌套函数. 而 装饰器只是闭包的特殊场景而已, 特殊在如果外函数的参数是指向一个, 用来被装饰的函数地址时(不一定是地址哈, 随意就好) , 就有了 "@xxx" 这样的写法, 还是蛮有意思的. 装饰器的作用是 在不改变原函数的代码前提下, 额外给原函数填写新功能. 写法上来看, 还是比较简洁优雅的. 装饰器的通俗写法 # 装饰器的通用写法 def out(func): def inner(*arg

Python变量

1. 变量的命名 变量名由字母.数字或下划线组成,首字母必须是字母或下划线. 2. 变量的赋值 Python中的变量不需要声明,变量的赋值操作既是变量声明和定义的过程.每个变量在内存中创建,都包括变量的标识,名称和数据这些信息.每个变量在使用前都必须赋值,赋值后该变量才会被创建. 3. 局部变量 局部变量是只能在函数或代码段内使用.函数或代码段一旦结束,局部变量的生命周期也将结束.局部变量的作用范围只在局部变量被创建的函数内有效.注意:Python创建的变量就是一个对象.Python会管理变量的

Python 变量类型day03

变量赋值 Python中的变量不需要声明,变量的赋值操作既是变量声明和定义的过程. 每个变量在内存中创建,都包括变量的标识,名称和数据这些信息. 每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建. 等号(=)用来给变量赋值. 等号(=)运算符左边是一个变量名,等号(=)运算符右边是存储在变量中的值.例如: #!/usr/bin/python counter = 100 # An integer assignment miles = 1000.0 # A floating point na

python变量与数据类型

变量 什么是变量 所谓变量,指的是在程序运行过程中需要用到的中间结果,变量定义后,会占用一块内存开辟的空间地址,通过内存空间确保同一时间的唯一性. >>> print(id.__doc__) Return the identity of an object. This is guaranteed to be unique among simultaneously existing objects. (CPython uses the object's memory address.) 变

Python 变量类型

Python 变量类型 变量存储在内存中的值.这就意味着在创建变量时会在内存中开辟一个空间. 基于变量的数据类型,解释器会分配指定内存,并决定什么数据可以被存储在内存中. 因此,变量可以指定不同的数据类型,这些变量可以存储整数,小数或字符. 变量赋值 Python中的变量不需要声明,变量的赋值操作既是变量声明和定义的过程. 每个变量在内存中创建,都包括变量的标识,名称和数据这些信息. 每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建. 等号(=)用来给变量赋值. 等号(=)运算符左边是一