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"。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

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