当前位置: 首页 > news >正文

Python中的变量与常量

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

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

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

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

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

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

用“=”号来给变量赋值

a = 100

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

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

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

>>> a       # 孤单单一个a,什么也表示不了,只能报错
Traceback (most recent call last):File "<pyshell#0>", line 1, in <module>a
NameError: name 'a' is not defined
>>> a = 1   # 这样就没问题了,解释器知道a是个新变量了
>>> c.append(1)     # c是个什么鬼?
Traceback (most recent call last):File "<pyshell#2>", line 1, in <module>c.append(1)
NameError: name 'c' is not defined

Python中,一切事物都是对象,变量引用的是对象或者说是对象在内存中的地址。

这条我们靠后详说。

在Python中,变量本身没有数据类型的概念,通常所说的“变量类型”是变量所引用的对象的类型,或者说是变量的值的类型。

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

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

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

>>> a = 1
>>> b = 2
>>> c = a + b       # 先计算a+b的值,再赋给c
>>> c
3

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解释器干了两件事情:

1.在内存中创建了一个‘ABC’的字符串对象;

2.在内存中创建了一个名为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中的一切都是对象,变量是对象的引用!

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Zabbix与Prometheus区别简述
  • 关闭 Microsoft Word 2010 配置窗口
  • C语言例:设 int x; 则表达式 (x=4*5,x*5),x+25 的值
  • [C++打怪升级]--学习总目录
  • python快速入门一
  • 【测试篇】软件测试的基本概念
  • uni-app项目不显示<uni-icons></uni-icons>以及其他uni-开头的组件
  • 阶乘的最高位
  • Java 文件处理完全指南:创建、读取、写入和删除文件详细解析
  • Scala介绍与环境搭建
  • 【React】在 JSX 中通过大括号使用 JavaScript
  • Avalonia笔记2 -数据集合类控件
  • 二叉树|450.删除二叉搜索树中的节点
  • leetcode 1143.最长公共子序列
  • 【问题处理】蓝鲸监控-数据断点解决
  • IE9 : DOM Exception: INVALID_CHARACTER_ERR (5)
  • 【React系列】如何构建React应用程序
  • angular2 简述
  • css的样式优先级
  • es6要点
  • GitUp, 你不可错过的秀外慧中的git工具
  • Java程序员幽默爆笑锦集
  • java取消线程实例
  • Vue ES6 Jade Scss Webpack Gulp
  • 短视频宝贝=慢?阿里巴巴工程师这样秒开短视频
  • 关于字符编码你应该知道的事情
  • 精益 React 学习指南 (Lean React)- 1.5 React 与 DOM
  • 类orAPI - 收藏集 - 掘金
  • 前嗅ForeSpider中数据浏览界面介绍
  • 限制Java线程池运行线程以及等待线程数量的策略
  • 移动端解决方案学习记录
  • ​io --- 处理流的核心工具​
  • ###C语言程序设计-----C语言学习(3)#
  • #DBA杂记1
  • #LLM入门|Prompt#2.3_对查询任务进行分类|意图分析_Classification
  • #在线报价接单​再坚持一下 明天是真的周六.出现货 实单来谈
  • (2)MFC+openGL单文档框架glFrame
  • (el-Transfer)操作(不使用 ts):Element-plus 中 Select 组件动态设置 options 值需求的解决过程
  • (Matlab)使用竞争神经网络实现数据聚类
  • (编程语言界的丐帮 C#).NET MD5 HASH 哈希 加密 与JAVA 互通
  • (分享)一个图片添加水印的小demo的页面,可自定义样式
  • (附源码)springboot 校园学生兼职系统 毕业设计 742122
  • (九)信息融合方式简介
  • (免费领源码)python+django+mysql线上兼职平台系统83320-计算机毕业设计项目选题推荐
  • (三)Kafka 监控之 Streams 监控(Streams Monitoring)和其他
  • (四十一)大数据实战——spark的yarn模式生产环境部署
  • (学习日记)2024.04.10:UCOSIII第三十八节:事件实验
  • (最优化理论与方法)第二章最优化所需基础知识-第三节:重要凸集举例
  • .gitignore文件_Git:.gitignore
  • .NET “底层”异步编程模式——异步编程模型(Asynchronous Programming Model,APM)...
  • .net 前台table如何加一列下拉框_如何用Word编辑参考文献
  • .NET/C# 编译期能确定的字符串会在字符串暂存池中不会被 GC 垃圾回收掉
  • .NET多线程执行函数
  • .NET中使用Redis (二)
  • @AutoConfigurationPackage的使用