python中的变量与对象
一. 什么是变量
变量就是以前学习的数学中常见的等式x = 3(x是变量,3是变量值),在编程中,变量不仅可以是数学,还可以是任意数据类型
二. 变量的命名规则
变量名必须是英文大小写、数字和_的组合,不能以数字开头,不能是关键字
a ✔ _name ✔ Atest1 ✔ 1a ✘
那么,如何查看python中的关键字呢?
#导入模块 import keyword #打印关键字列表 print(keyword.kwlist) 结果: ['False', 'None', 'True', 'and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']
三. 变量、对象和引用
在python中,一切都是对象,一切都是对象的引用
举个最简单的例子:
a = 3
如图所示,python将执行三个步骤来完成a = 3的赋值操作:
1. 创建也变量a
2. 创建一个对象(分配一块内存),来存储值3
3. 将变量与对象,通过指针连接起来,从变量到对象的连接称之为引用(变量引用对象)
四. 类型属于对象,而非变量
在python中,我们无需事先声明变量的类型,变量类型是在运行过程中根据对象的类型自动决定的。
为了理解对象类型是如何使用的,请看我们对一个变量多次赋值后的结果:
a = 3 #整型 a = 'spam' #字符串 a = 1.2.3 #浮点型
在上面的例子中,a开始是一个整数,然后变成一个字符串,最后变成一个浮点数。看起来,a的类型发生了三次改变。
事实上,在python中,变量没有类型,类型是属于对象的。就像前面所说,a = 3,是变量a引用了对象3,而以上三条语句,实际上是变量a引用了不同类型的对象。
那么,对象的结构又是什么样的?
如下图所示,每个对象都包含了两个头部信息,一个是类型标志符,另一个是引用计数器。类型标志符标记了这个对象的类型,例如整数对象3,包含了值3和一个类型标志符(严格意义上,它是一个指向int的对象的指针),这就告诉python,这是一个整数对象。而'spam'字符串对象的标志符指向了一个字符串类型。由于对象记录了它们的类型,变量的类型就没有必要了。
五. 对象的垃圾回收
当变量a重新赋值时,它的前一个引用会发生什么变化呢?
a = 3 a = 'spam'
答案是,当变量a重新赋值给字符串'spam'时,它的上一个引用对象3马上被回收了,对象的空间自动放入自由内存空间池,等待后来的对象使用。
在python内部是这样实现这一功能的:它在每个对象内部分配了一个计数器,计数器记录了当前指向该对象的引用的数目,一旦这个计算器被设置为0(即这个对象没有被任何变量引用),该对象的内存空间就会自动回收。这种自动回收对象空间的机制就叫垃圾收集,它的最大好处是,可以再脚本中任意使用对象而不需要考虑释放内存空间,在程序运行时,python将会清理那些不再使用的空间。
python中的变量与对象的更多相关文章
- Python中的变量引用对象需注意的几点
Python中的变量引用对象需注意的几点 分类:Python (55) (0) 普通引用: Python中,变量的作用仅仅是一个标识,只有赋值后才被创建,它可以引用任何类型的对象,而且在引用之前必须 ...
- Python中的变量、对象
由于没时间系统学习下Python 只能见一个问题探究一个问题了 一.初级 - 对象 关于Python中的数据类型,今天重新认识了下.[参考] 首先,Python中,对象才有类型, 变量是没有类型的,它 ...
- python学习(九)python中的变量、引用和对象的关系
<Think In Java>中说到过"万事万物皆对象",这句话也可以用在Python中. 感觉Python中的变量有点像Javascript中的变量,是弱类型的,但是 ...
- python中的变量和数据类型
一.变量定义:变量是计算机内存中的一块区域,存储规定范围内的值,值 可以改变,通俗的说变量就是给数据起个名字. 二.变量命名规则: 1. 变量名由字母.数字.下划线组成 2. 数字不能开头 3. 不可 ...
- Python中的变量、引用、拷贝和作用域
在Python中,变量是没有类型的,这和以往看到的大部分编辑语言都不一样.在使用变量的时候,不需要提前声明,只需要给这个变量赋值即可.但是,当用变量的时候,必须要给这个变量赋值:如果只写一个变量,而没 ...
- 第二章python中的一切皆对象
1.函数和类也是对象,属于python的一等公民 赋值给一个变量 可以添加到集合对象之中 可以作为参数传递给函数 可以当作函数的返回值 def ask(name="ask_wzh" ...
- python中的一切皆对象
python中一切皆对象是这个语言灵活的根本.函数和类也是对象,属于python的一等公民.包括代码包和模块也都是对象.python的面向对象更加彻底. 可以赋值给一个变量可以添加到集合对象中可以作为 ...
- Python中的不可变对象类型与可变对象类型
https://blog.csdn.net/answer3lin/article/details/86430074 其实各个标准资料中没有说明Python有值类型和引用类型的分类,这个分类一般是C++ ...
- python中的变量引用小结
python的变量都可以看成是内存中某个对象的引用.(变量指向该内存地址存储的值) 1.python中的可更改对象和不可更改对象 python中的对象可以分为可更改(mutable)对象与不可更改(i ...
随机推荐
- 微信小程序排行榜
哪类微信小程序使用量最多?小程序是附属在微信上,微信小程序排行榜跟微信的用户属性有很大的关系,微信用户对新闻资讯.情感.养生表现出了极大的兴趣,所有我们从新闻资讯小程序.视频小程序.情感类微信小程序. ...
- 剑指offer 面试9题
面试9题: 题目:用两个栈实现队列 题目描述:用两个栈来实现一个队列,完成队列的Push和Pop操作. 队列中的元素为int类型. 解题思路:有两个栈stackA,stackB,A为入栈,B为出栈的. ...
- 2015.7.8(千股跌停!做T不应当只做中色,中国软件)
2015.7.81.今天开盘所有的股票全部跌停,真是一大奇观! 今天中色股份和以往不同买卖盘为正! 但是中色的爬升比较慢,价位始终没有高过昨天的收盘价————这种情况下是否应该做T呢? 2.做T不应当 ...
- 2015.7.7——跌停板做T,就算要搏跌停反弹也要看卖一档压力啊
1.今天中色股份和以往不同买卖盘为正!————今天要重新观察这种新常态下的盘面运作 是否会出现如2015.7.6中描述的“前期错过了皮城中的黄金买点,...其实只要买卖盘为负,后期还会有再次尝试该低点 ...
- ibatis工作原理
摘要: iBATIS 通过 SQL Map 将 Java 对象映射成 SQL 语句和将结果集再转化成 Java 对象,与其他 ORM 框架相比,既解决了 Java 对象与输入参数和结果集的映射,又能够 ...
- SQL 根据IF判断,SET字段值
当INVOICE_STATUS值为1时,赋值为2,否者赋值为原来的值 UPDATE T_INVOICE SET DOWNLOAD_COUNT = DOWNLOAD_COUNT + 1, INVOICE ...
- 【HackerRank】Insertion Sort Advanced Analysis(归并排序求数列逆序数对)
Insertion Sort is a simple sorting technique which was covered in previous challenges. Sometimes, ar ...
- CMA内存管理子系统
转:http://www.wowotech.net/memory_management/cma.html 前言 本文是近期学习CMA模块的一个学习笔记,方便日后遗忘的时候,回来查询以便迅速恢复上下文. ...
- Squid 正向代理配置
Squid 正向代理配置 1.删除主配置文件重写写入配置 rm -f /etc/squid/squid.conf 2.重新写入配置正向代理 vim /etc/squid/squid.conf # 监听 ...
- 跨平台移动开发 Xuijs超轻量级的框架+Emile CSS动画
Xuijs超轻量级的框架+Emile CSS动画效果图 示例代码 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional// ...