【Python】Python中的常量与变量

news2025/1/10 23:55:12

常量与变量

  • 导读
  • 一、新建项目
  • 二、常量
    • 2.1 字面常量
    • 2.2 特殊常量
  • 三、变量
    • 3.1 变量的定义
    • 3.2 变量的命名
      • 3.2.1 关键字
  • 结语

封面

导读

大家好,很高兴又和大家见面啦!!!

在上一篇内容中我们详细介绍了Python环境的搭建过程,在今天的内容中我们将会开始学习Python的第一个基础知识点——变量与数据类型。

在C/C++中我们学习到的变量在定义时是需要表明此时定义变量的数据类型的,那么对于Python而言,它的变量和数据类型与C/C++相比会不会有所不同呢?下面我们就一起来看一下在Python中的变量与数据类型是如何使用的吧!!!

一、新建项目

在开始正式内容之前,我们要先新建一个项目,PyCharm与VS不同,VS每次在打开时需要自主选择是打开历史文件还是新建一个项目,而PyCharm中会直接打开历史文件,如下所示:
新建项目
当我们需要新建一个项目时我们则需要通过左上角的文件来完成新项目的创建:
新建项目2
有朋友没有看上一篇的内容,这时可能会好奇我这左上角也没有文件这个选项呀,这里我只需要找到左上角的主菜单按钮,单击就可以看到文件这个选项了:
新建项目3

有朋友的PyCharm可能是英文版的,如果需要汉化的话可以在文件—>设置中下载汉化插件,具体步骤大家可以回顾上一篇内容【Python】Python环境搭建教学#保姆级教学#手把手带你安装——内附Python环境搭建安装包(Python、PyCharm以及激活插件安装包)在2.5.3 插件安装中有详细介绍,这里我就不再过多介绍。

在找到对应的按钮后我们就可以新建一个项目了:
新建项目4
这里我们还是先修改项目名称,然后查看项目的存储位置,最后点击创建即可。

新建项目5
从项目的存储路径中我们可以看到此时已经完成了新项目的创建,但是PyCharm在打开这个新项目是会弹出下面的窗口:
新建项目6
这里我们只需要选择一种打开方式即可,这里我就选择新窗口好了,如下所示:
新建项目7
可以看到此时在打开时PyCharm又开启了一个新的窗口来打开我们创建好的新文件,这里我们直接在新窗口中新建我们需要的文件即可,步骤还是:选择文件夹—>单击右键—>选择新建—>选择Python文件
新建项目8
之后我们正常设置文件名即可,这里就不再继续展开。

二、常量

2.1 字面常量

常量,简单的理解就是不会改变的量

我们学过的数字1、 2、 3、 4……字母a、b、c、d……这些一眼就能知道其值的量被称为字面常量,它们都有一个特点——不能够被改变。

在C/C++中我们有学过的赋值操作符——'='就可以将其右操作对象的值赋值给左操作对象,但是如果左操作对象为常量时,此时赋值就不能正常完成,比如我想将2的值赋值给1,于是我写了这句代码:

1 = 2;

此时程序就会出现报错,报错内容为不可修改的左值。

字面常量

在Python中这种语法规则也同样是被遵守的,当我们在Python中尝试修改常量的值的话,程序则会显示无法赋值给文字:
字面常量2
在Python中的字面常量可以分为3类:

  • 数字字面常量——1、 2、 3……等整数和1.2、 2.3、 3.14……等小数
  • 字符串字面常量——'a'、'ab'、'abc'、'abcd'……等字符串
  • 布尔字面常量——True、False
1, 2, 3, 4     # 数字字面常量
1.1, 3.1415    # 数字字面常量
'a', 'asdf'    # 字符串字面常量
True, False    # 布尔字面常量

2.2 特殊常量

Python与C/C++不同的是,在C/C++中除了字面常量外还存在三种常量:

  1. 通过const修饰的常变量
  2. 通过#define定义的常量
  3. 通过enum定义的枚举常量

其它常量
但是在Python中除了字面常量外,只有一种特殊常量——None
特殊常量
当我们尝试着给这个常量进行赋值操作时就会出现上述报错——关键字赋值。Python中的None与C/C++中的NULL是等价的,它们都是代表的无,但是它们之间还是有些许区别:

  • 在C/C++中NULL指的是空指针,其类型为指针类型,因此我们可以通过'%p'将其值打印出来:

NULL
可以看到当我们通过'%d'来打印NULL时,VS虽然能够正常打印,但是会报错——参数实际类型为void*类型,需要通过'%p'来打印,通过'%p''%d'打印出来的结果都是0;

  • 在Python中,None的值就为None,我们可以通过内建函数type()将其类型打印出来

None
可以看到,在Python中对于这个特殊常量None而言,其值就是None,其类型为NoneType类型;

三、变量

与常量相对应的就是变量,简单的理解就是可以改变的量

3.1 变量的定义

在C/C++中我们要定义一个变量时我们需要指明变量的数据类型、变量名以及变量的初始值。如下所示:

// 变量——变量的定义
void test4() {
	//变量的定义格式
	// 数据类型 变量名 = 初始值;
	// 初始值可有可无
	int a;	// 定义整型变量a
	char ch = 'a';	// 定义字符变量ch,并将字符a作为初始值赋值给ch
	float f = 3.14f;		// 定义单精度小数变量f,并将3.14作为初始值赋值给f
}

但是在Python中的变量与C/C++中有些许区别,在Python中我们不需要表明变量的数据类型,而是通过初始化的值来指明变量的数据类型:

# 变量——变量的创建
# 创建格式
# 变量名 = 初始值
a = 1   # 定义整型变量a,并将整数1作为初始值赋值给a
b = 'a'     # 定义字符串型变量b,并将字符串'a'作为初始值赋值给b
c = 1.0     # 定义浮点型变量c,并将小数1.0作为初始值赋值给c

变量之所以被称为变量,就是因为我们可以在后续的使用过程中来根据自己的需求对变量的值进行修改,这里我就不再继续展开。

3.2 变量的命名

在计算机语言中,对于变量的命名有着一些硬性规则:

  1. 变量名必须由数字,字母,下划线构成;
  2. 在变量名中数字不能作为开头且变量名中不能包含特殊符号;
  3. 变量名不能和Python中的关键字重名;
  4. 变量中要严格区分大小写;

这四条规则对任何语言都是适用的,这里我以我们熟悉的C/C++举例:

// 变量——变量的命名
void test5() {
	// 通过字母进行命名——字母需要严格区分大小写
	int a = 1;
	int A = 2;
	// 通过字符和数字进行命名——字母必须在前
	int a1 = 3;
	// 通过下划线和数字进行命名——下划线必须在前
	int _1 = 6;
	// 通过字母和下划线命名
	int a_ = 4;
	int _a = 5;
	// 通过字母、下划线和数字进行命名
	int a1_ = 7;
	int a_1 = 8;
	int _a1 = 9;
	int _1a = 10;
}

这里我们安装硬性规则定义了10个变量,下面我们来测试一下,看是否能够成功打印这些变量:

变量的命名
从测试结果中可以看到,此时这10个变量都定义成功,并且都是独立的变量。

在C/C++中我们学过了很多关键字,这里以我们非常熟悉的if为例,如果此时我想定义一个叫if的变量,那肯定是会失败的,如下所示:

变量的命名2
当我们创建一个if变量时,VS所报的错误为语法错误,VS优先执行的是由关键字if组成的条件语句,而不是int的变量定义;

在Python中if同样也是条件语句的关键词,如果此时我们定义一个同名变量,又会发生什么问题呢?
变量的命名3
可以看到,此时同样是报错的语法错误,也就是说,在Python中的定义变量时,如果变量与关键字重命了,程序同样也会优先执行关键字的功能。

3.2.1 关键字

由上例可知,我们在定义变量时一定要注意不能与关键字重名。这时可能就有朋友会问了,在Python中有哪些关键字呢?这个问题我们可以直接通过代码来获取:

# 关键字
import keyword
print(keyword.kwlist)
# [
# 'False', 'None', 'True', 'and', 'as', 
# 'assert', 'async', 'await', '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'
# ]

通过import关键字来引入keyword模块,再将模块中的关键字列表kwlist打印出来即可获取到下面的这些关键字。从这些关键字中,我们可以看到很多我们比较熟悉的关键字:

# 'False', 'True', 'assert', 'break', 'class', 
# 'continue', 'else', 'for', 'if', 'return', 'while'

但是这些关键字是否与我们所熟知的关键字的功能一致,目前我们还无从得知,随着后面学习的深入我们会慢慢的接触到这些关键字的用法,这里就不再继续展开。


当我们在给变量进行命名时,我们还需要了解一下变量命名的软性规则:

  1. 给变量命名时,尽量用能够描述变量含义的单词来表示。
    • 如:记录数量可以使用count、记录总和可以使用sum……
  2. 当我们使用1个单词描述不清楚时,可以使用多个单词来命名,不怕变量名字长,而怕变量的含义表达的不清楚~

从这两点规则我们不难看出,我们在进行编程的过程中如果将变量的名字取好,那对于我们理解代码会提供帮助,换句话说,在进行变量命名时我们需要考虑通过变量的名字来提高代码的可读性。

当我们通过软性规则来给变量进行命名时,我们可以使用两种命名方法:

  1. 驼峰命名法:除了第一个单词的首字母之外,后序每个单词的首字母都大写~
  2. 蛇形命名法:单词之间使用下划线来进行分割

如下所示:

# 变量——变量的命名
count = 0   # 记录数量时将变量命名为count
countNum = 0    # 驼峰命名法——该变量用于记录数字的数量
student_id = 0  # 蛇形命名法——该变量用于记录学生的学号

相信大家现在应该都能理解如果给变量命名以及给变量命名的方法了,常量与变量的知识点我们会在后续的学习过程中进一步拓展,这里就不再继续展开了。

结语

今天的内容到这里就全部结束了,在下一篇内容中我们将介绍Python中的数据类型的相关内容,大家记得关注哦!如果大家喜欢博主的内容,可以点赞、收藏加评论支持一下博主,当然也可以将博主的内容转发给你身边需要的朋友。最后感谢各位朋友的支持,咱们下一篇再见!!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1889324.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

一键转换,高效管理:引领文件批量改后缀名与TXT转DOCX格式新潮流

在这个数字化时代,文件管理和格式转换成为了我们日常工作中不可或缺的一部分。然而,手动更改文件后缀名以及将TXT文件转换为DOCX格式,不仅耗时耗力,还容易出错。幸运的是,我们有了文件批量改名高手这款强大的工具&…

【JAVA多线程】JDK中的各种锁,看这一篇就够了

目录 1.概论 1.1.实现锁的要素 1.2.阻塞队列 1.3.Lock接口和Sync类 2.各种锁 2.1.互斥锁 2.1.1.概论 2.1.2.源码 1.lock() 2.unlock() 2.2.读写锁 2.3.Condition 2.3.1.概论 2.3.2.底层实现 1.概论 1.1.实现锁的要素 JAVA中的锁都是可重入的锁,因为…

固定网国内数据传送业务经营许可证

一、国内固定网数据传送业务是什么? 固定网国内数据传送业务是指互联网数据传送业务以外的,在固定网中以有线方式提供的国内端到端数据传送业务。主要包括基于IP承载网、ATM网、X.25分组交换网、DDN网、帧中继网络的数据传送业务等。该业务属于A2类基础…

数字源表表征及测试纳米材料高温原位方案

01/纳米材料电学性能的表征和分析/ 与传统的材料相比,纳米材料具有原子级厚度、表面平整无悬空键、载流子迁移率好等优点,其导电性能很大程度依赖于材料本身的带隙、掺杂浓度和载流子迁移率。同样的掺杂浓度下,迁移率越大,电阻率…

计算机网络--网络层

一、网络层的服务和功能 网络层主要为应用层提供端对端的数据传输服务 网络层接受运输层的报文段,添加自己的首部,形成网络层分组。分组是网络层的传输单元。网络层分组在各个站点的网络层之间传输,最终到达接收方的网络层。接收方网络层将运…

nginx SSI(Server Side Include)服务端包含 合并拼装静态内容

一、什么是SSI 在被传送给浏览器之前,服务器会对 HTML 文档进行完全地读取、分析以及修改,使用SSI指令将文本、图片或代码信息包含到网页中。对于整个页面可以拆分成多个模块,通过SSI指令将几个模块拼接成一个完整的页面,当有内容…

大模型在软件测试领域的应用场景有哪些?_大模型在测试领域应用

在数字化转型的大背景下,在软件定义一切的趋势下,软件测试人员需要接触和理解的信息越来越多,并呈现加速增长的态势。需求越来越大,交付周期越来越短,受制于体力和能力限制,测试人员的效率和质量难以同步提…

基于模式识别的垃圾分类系统-计算机毕业设计源码96151

摘 要 随着城市化进程的加速和人口的不断增长,垃圾管理和环境保护成为了全球面临的重要挑战之一。垃圾分类作为一种可行的解决方案,旨在减少垃圾的数量、降低环境污染,并促进资源的回收与再利用。 本文旨在设计并开发一个垃圾分类系统。该系统…

电工电子革新风暴:在线电路仿真软件重塑行业格局

随着科技的不断进步,电工电子行业正迎来一场由在线电路仿真软件引领的革新风暴。这些功能强大的软件工具不仅极大地提高了电路设计的效率,更为整个行业带来了前所未有的冲击和机遇。 仿真软件:电工电子行业的“隐形推手” 在线电路仿真软件…

代码随想录算法训练营第42天| 198.打家劫舍、213.打家劫舍II 337.打家劫舍III、 337.打家劫舍III

198.打家劫舍 题目链接:198.打家劫舍 文档讲解:代码随想录 状态:不会 记忆化搜索思路: 可以从最后一间房子开始,每次面对一个房子要考虑打劫还是不打劫,如果打劫了就从它的下下个房子开始打劫,在…

idea Git操作

1、代码拉取(左上角) 或 2、代码push(左上角) 3、切换分支(右下角) 4、分支管理 5、当前分支和某一个分支对比差异 6、当前分支某一个提交需要恢复成提交前状态(revert) 7、其他分…

Python处理浮点数的实用技巧

更多Python学习内容:ipengtao.com 四舍五入是一种常见的数学操作,它用于将数字舍入到指定的精度。Python 提供了多种方法来实现四舍五入操作,从基本的 round 函数到高级的 decimal 模块,满足不同的需求。本文将详细介绍这些方法&a…

Profibus DP主站转Modbus网关连接伺服与电机通讯

在工业自动化领域,将Profibus DP主站转Modbus网关(XD-MDPBM20)用于连接伺服与电机通讯是一种常见且重要的应用方式。当使用Profibus DP主站转Modbus网关(XD-MDPBM20)连接伺服与电机进行通讯时,可以参考以下…

使用代理,在Mapper层面统一封装VO、Entity 之间的转换逻辑

无聊看看开源项目,无意间看到里面的业务代码用到了BaseMapperPlus,于是点进去发现里面封装了Vo、Entity 之间的转换逻辑。想着自己平时都是手动的进行 copy 转换来着。于是本地进行验证了一番,发现还挺好用的,懒人必备。但是前提是…

MySQL 9.0 悄悄上线,支持面向AI的向量数据库

MySQL狂热粉丝群已经发现MySQL官网上MySQL9.0这两天悄然上线,已经可以下载体验了,目前被定义为创新版本(Innovation)。 下载地址:https://dev.mysql.com/downloads/mysql/ 支持主流的操作系统,安装后可以直…

101 个现实世界的新一代 AI 用例

自从一年半前生成式人工智能首次引起世界关注以来,人们一直在热烈讨论这项新技术的最佳用途。虽然我们都喜欢早期的有趣聊天和诙谐的打油诗,但我们很快发现,许多最大的人工智能机会显然都在企业中。 短短几个月内,这些组织就从 A…

tcp/ip, http 等协议的端口号

每当看到有人的简历上写着熟悉 tcp/ip, http 等协议时, 我就忍不住问问他们: 你给我说说, 端口是啥吧! 可惜, 很少有人能说得让人满意... 所以这次就来谈谈端口(port), 这个熟悉的陌生人. 在此过程中, 还会谈谈间接层, naming service 等概念, IoC, 依赖倒置等原则以及 TCP 协议…

大模型应用:一文搞懂Fine-tuning,模型微调有啥好处,从理论到实操

前言 我们前面几篇博文中出现的大模型,都是通用的大模型。但在更专业的领域,需要更专业的模型,这就需要用到模型微调的能力。 从NLP范式发展的趋势来看,prompt模型的方式已经成为主流,prompt learning已经很成熟了&a…

Linux 搭建 Kafka 环境 - 详细教程

目录 一. Kafka介绍 1. 应用场景 2. 版本对比 二. Kafka安装 1. 前置环境 (1)安装JDK 2. 软件安装 (3)环境变量配置 (3)服务启动 三. Console测试 基础命令 (1)列出Kafk…

大模型分布式训练的第四种境界

主要内容包括: \1. 历史背景 \2. 分布式训练挑战 \3. 分布式训练技术体系 \4. 未来挑战 \5. Q&A 01 历史背景 自 2019 年以来,大语言模型发展迅猛,不断有新的研究成果涌现,包括各类预训练模型及其应用,如 LL…