Python基础(8)-变量

8.1-什么是变量:

如果,我们想把数据存到内存里,以便在程序中多次使用,就需要通过变量来存储数据,然后在需要的时候通过变量的名字来提取数据。

变量就是编程中最基本的存储单位,会暂时的储存你放进去的东西(即代指内存里某个地址中保存的内容)。

在计算机程序中,变量不仅可以是数字,还可以是任意数据类型。

在python中我们可以把各种类型的数据赋值给同一个变量,比如:

#!/usr/bin/env python
# -*- coding:utf-8 -*-

#s1 存储的内容为字符串"hello world"
s1 = "hello world"
print(type(s1))
print(s1)

print("-----" * 8)

#s1 存储的内容变为整形 123
s1 = 123
print(type(s1))
print(s1)

运行结果:

Python能自由改变变量类型的特征被称为动态类型。并不是所有的语言都支持动态类型。在静态类型的语言中,变量有事先说明好的类型。特定类型的数据必须存入特定类型的变量。相比于静态类型,动态类型显得更加灵活便利。

8.2-变量的命名规范:

  1. 变量名只能是是大小写英文字母、数字和_组成。
  2. 不能用数字开头。
  3. 以下关键字(python内部的关键字)不能声明为变量名。
['and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'exec', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'not', 'or', 'pass', 'print', 'raise', 'return', 'try', 'while', 'with', 'yield']
在 Python3 中, exec 不再是关键字,但 nonlocal 是一个新的关键字。

注:变量对大小写敏感

8.3-变量赋值:

#!/usr/bin/env python
# -*- coding:utf-8 -*-
user = "root"
pwd = "root123"

user = "root"的过程:python解释器会在内存中创建一个"root"字符串,将"root"存储在一个内存空间里,然后user变量指向存储"root"字符串的内存地址。

在内存中的表示:

#!/usr/bin/env python
# -*- coding:utf-8 -*-
user = "root"

#将变量pwd指向了user变量所指向的地址
pwd = user

在内存中的表示:

#!/usr/bin/env python
# -*- coding:utf-8 -*-
user = "root"

#将变量pwd指向了user变量所指向的地址
pwd = user

#将变量user的指向改为"root123",但变量pwd并没有改变
user = "root123"

在内存中的表示:

8.4-垃圾回收机制:

在Python基础中还有一个比较重要的概念就是垃圾回收机制,下面我们通过代码来验证:

>>> a = 1
>>> b = a
>>> id(a),id(b)
(1731718960, 1731718960)

首先我们声明了一个变量a,a等于1,然后又声明了变量b,b等于a,其实就是变量b指向了a所指向的内存地址, 通过id()内置函数我们可以清楚地看到这两个变量指向的是同一块内存区域。

再继续下列实例代码:

>>> name = "root"
>>> name = "root123"
>>> name
'root123'

通过上面这个实例,可以清楚的理解到垃圾回收机制是如何工作的:

  1. 创建一个变量 name ,指向 "root" 的内存地址;
  2. 如果 "root" 这个值之前没有在内存中创建,那么现在创建它,并让这个内存地址的引用数+1,此时等于1;
  3. 然后对变量 name 重新赋值,让其指向 "root123" 的内存地址;
  4. 那么此时 "root" 值的引用数现在变成了0,当python一旦检测到某个内存地址的引用数等于0时,就会把这个内存地址给删掉,从而释放内存;
  5. 最后变量 name 指向了 "root123" 的内存地址,所以 name 就等于 "root123"。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,271评论 5 466
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,725评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,252评论 0 328
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,634评论 1 270
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,549评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 47,985评论 1 275
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,471评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,128评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,257评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,233评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,235评论 1 328
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,940评论 3 316
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,528评论 3 302
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,623评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,858评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,245评论 2 344
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,790评论 2 339

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,559评论 18 139
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,531评论 18 399
  • 指针是C语言中广泛使用的一种数据类型。 运用指针编程是C语言最主要的风格之一。利用指针变量可以表示各种数据结构; ...
    朱森阅读 3,419评论 3 44
  • 来来来,了解一下java的最基本的功能,连接数据库进行增删改查 怎么连接数据库呢? 1.要连接数据库受限得有支持链...
    测试的旅途中阅读 486评论 0 1
  • 有个朋友跟我说她结婚后,性格都变了,将曾经一个自信的自己变得优柔寡断,而这一切,缘于她那个伴侣. 婚前的时候,朋友...
    朝迎日出阅读 317评论 0 0