Python中的变量与常量


Posted in Python onNovember 11, 2021

 

一、变量、常量的区别

  • 变量:在程序运行过程中,值会发生变化的量。
  • 常量:在程序运行过程中,值不会发生变化的量。

无论是变量还是常量,在创建时都会在内存中开辟一块空间,用于保存它的值。

二、变量

1. Python中的变量不需要声明类型

这是根据Python的动态语言特性而来。变量可以直接使用,而不需要提前声明类型。例如下面的a,b,c,d四个变量,在使用前没有进行任何的诸如 int a, str b, list c , int d 的类型声明,而这在C语言和JAVA编程语言中是必须要携带的。

例如:

a = 4 
 b = "haha" 
 c = [] 
 d = 9-5

2. 用“=”号来给变量赋值

a = 100

这里的等号要理解并读作“赋值”,而不是“等于”,“赋值”是对变量的操作,而“等于”是对两个变量进行比较。上面的a,b,c,d四个变量,就通过“=”号,赋予了不同的值。

3. 赋值

每个变量在使用前都必须赋值,变量赋值以后才会被创建。

新的变量通过赋值的动作,创建并开辟内存空间,保存值。如果没有赋值而直接使用会抛出赋值前引用的异常或者未命名异常。

例如:

a       # 孤单单一个a,什么也表示不了,只能报错 
a = 1   # 这样就没问题了,解释器知道a是个新变量了 
c.append(1)     # c是个什么鬼? 
NameError: name 'c' is not defined

结果:

Python中的变量与常量

4. 变量

Python中,变量本身没有数据类型的概念

通常所说的“变量类型”是变量所引用的对象的类型,或者说是变量的值的类型。

a = 1 
a = "haha" 
a = [1, 2, 3] 
a = { "k1":"v1"}

变量a在创建的时候,赋予了值为1的整数类型,然后又被改成字符串“haha”,再又变成一个列表,最后是个字典。变量a在动态的改变,它的值分别是不同的数据类型,这是动态语言的特点。

5. “=”

“=”号这个赋值运算符是从右往左的计算顺序

a = 1 
b = 2 
c = a + b  # 先计算a+b的值,再赋给c 
print(c)

Python中的变量与常量

6. Python允许同时为多个变量赋值

(例如:a = b = c = 1,最终大家都是1)。也可以同时为多个变量赋值,用逗号分隔,逐一对应。

例如:a, b, c = 1, 2, 3,最后a是1,b是2,c是3。

不要把赋值语句的等号等同于数学的等号。

x = 1 
 
x = x + 2

如果从数学上理解x = x + 2那无论如何是不成立的,在程序中,赋值语句先计算右侧的表达式x + 2,得到结果3,再赋给变量x。由于x之前的值是1,重新赋值后,x的值变成3。

a = 'ABC'时,Python解释器干了两件事情:

  • 在内存中创建了一个‘ABC'的字符串对象;
  • 在内存中创建了一个名为a的变量,并把它指向'ABC'。

也可以把一个变量a赋值给另一个变量b,这个操作实际上是将变量b指向变量a所指向的数据,

例如下面的代码:

a = 'Jack' 
b = a 
a = 'Tom' 
print(b) 
print(a)

最后变量b的内容到底是'Jack'还是'Tom'?如果从数学意义上理解,就会错误地得出b和a相同是‘Tom',但实际上b的值还是'Jack ‘!

请牢记:Python中的一切都是对象,变量是对象的引用!

图:

Python中的变量与常量

执行a = ‘Jack',解释器创建字符串‘Jack'对象和变量a,并把a指向‘Jack'对象;

执行b = a,解释器创建变量b,并且将其指向变量a指向的字符串‘Jack'对象;

执行a = ‘Tom',解释器创建字符串‘Tom'对象,并把a改为指向‘Tom'对象,与b无关。

三、常量

常量就是不变的变量,比如常用的数学常数圆周率就是一个常量。在Python中,通常用全部大写的变量名表示常量:

PI = 3.14159265359

但事实上,从Python语法角度看,PI仍然是一个变量,因为Python根本没有任何机制保证PI不会被改变。你完全可以给PI赋值为10,不会弹出任何错误。所以,用全部大写的变量名表示常量只是一个习惯上的用法。

常量通常放置在代码的最上部,并作为全局使用。

四、总结

到此这篇关于Python中的变量与常量的文章就介绍到这了,更多相关Python变量与常量内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
在Python中使用SQLite的简单教程
Apr 29 Python
用Python实现一个简单的能够上传下载的HTTP服务器
May 05 Python
R语言 vs Python对比:数据分析哪家强?
Nov 17 Python
python爬取网页内容转换为PDF文件
Jul 28 Python
在django中,关于session的通用设置方法
Aug 06 Python
Python使用matplotlib 模块scatter方法画散点图示例
Sep 27 Python
python OpenCV GrabCut使用实例解析
Nov 11 Python
Python高级编程之继承问题详解(super与mro)
Nov 19 Python
tensorflow 20:搭网络,导出模型,运行模型的实例
May 26 Python
Python extract及contains方法代码实例
Sep 11 Python
python使用dlib进行人脸检测和关键点的示例
Dec 05 Python
python如何修改文件时间属性
Feb 05 Python
Python 键盘事件详解
Nov 11 #Python
Python 详解通过Scrapy框架实现爬取CSDN全站热榜标题热词流程
Nov 11 #Python
Python 多线程处理任务实例
Nov 07 #Python
python利用while求100内的整数和方式
Nov 07 #Python
python中if和elif的区别介绍
Nov 07 #Python
python中取整数的几种方法
Python 中的 copy()和deepcopy()
Nov 07 #Python
You might like
php下实现折线图效果的代码
2007/04/28 PHP
PHP学习之字符串比较和查找
2011/04/17 PHP
str_replace只替换一次字符串的方法
2013/04/09 PHP
php操作redis中的hash和zset类型数据的方法和代码例子
2014/07/05 PHP
PHP比你想象的好得多
2014/11/27 PHP
JQuery 常用方法基础教程
2009/02/06 Javascript
Google排名中的10个最著名的 JavaScript库
2010/04/27 Javascript
JS上传前预览图片实例
2013/03/25 Javascript
javascript eval(func())使用示例
2013/12/05 Javascript
FF IE浏览器修改标签透明度的方法
2014/01/27 Javascript
jquery中show()、hide()和toggle()用法实例
2015/01/15 Javascript
纯Javascript实现ping功能的方法
2015/03/20 Javascript
日常收集整理的JavaScript常用函数方法
2015/12/10 Javascript
Easyui笔记2:实现datagrid多行删除的示例代码
2017/01/14 Javascript
Textarea输入字数限制实例(兼容iOS&安卓)
2017/07/06 Javascript
Angular4的输入属性与输出属性实例详解
2017/11/29 Javascript
Node.js 如何利用异步提升任务处理速度
2019/01/07 Javascript
vue封装可复用组件confirm,并绑定在vue原型上的示例
2019/10/31 Javascript
Centos下实现安装Python3.6和Python2共存
2018/08/15 Python
基于Python实现拆分和合并GIF动态图
2019/10/22 Python
python中setuptools的作用是什么
2020/06/19 Python
万户网络JAVA程序员岗位招聘笔试试卷
2013/01/08 面试题
汽车专业学生自我评价
2014/01/19 职场文书
办公室秘书岗位职责范本
2014/02/11 职场文书
《雷鸣电闪波尔卡》教学反思
2014/02/23 职场文书
《夹竹桃》教学反思
2014/04/20 职场文书
党的群众路线个人对照检查材料
2014/09/23 职场文书
投标人法定代表人授权委托书格式
2014/09/28 职场文书
期末考试复习计划
2015/01/19 职场文书
邀请函怎么写
2015/01/30 职场文书
硕士论文致谢范文
2015/05/14 职场文书
运动会闭幕式通讯稿
2015/07/18 职场文书
对Golang中的FORM相关字段理解
2021/05/02 Golang
CSS实现章节添加自增序号的方法
2021/06/23 HTML / CSS
低门槛开发iOS、Android、小程序应用的前端框架详解
2021/10/16 Javascript
十大好看的穿越动漫排名:《瑞克和莫蒂》第一,国漫《有药》在榜
2022/03/18 日漫