什么是常量和文字常量?

2023-11-23

我正在学习 Python,我对常量和文字常量感到困惑。这些是什么?我们使用它们的目的是什么?和普通变量有什么区别?

我是一个真正的初学者。作为初学者,我可以说我对编程世界一无所知。例如,我不知道表达式是什么,反之亦然。

我一直在使用Python语言学习“Python 的一个字节”书中的某个地方我遇到了一个讨论文字和常量的部分。我在那里分享了该部分:

5.2.文字常量

文字常量的一个示例是数字,例如 5 、 1.23 或 字符串,例如“这是一个字符串”或“这是一个字符串!” 。

它被称为文字,因为它是文字 - 你使用它的值 字面上地。数字 2 总是代表它自己,而不代表其他任何东西 - 它 是一个常数,因为它的值不能改变。因此,所有这些 被称为文字常量。

它说,“它被称为文字,因为它是文字 - 你按字面意思使用它的值”,我只是不明白这一部分。这本书试图说我们从字面上使用该值是什么?另一个模糊点是数字 2 是一个常数,因为它的值不能改变。这怎么可能?我们可以改变它,例如:

stack = 2
stack = 3

首先,我将数字 2 分配给堆栈,然后更改堆栈的值(这就是书上声称的数字 2 是常量,因此无法更改),并将数字 3 分配给它。所以,我很容易地改变了数字2的值。我真的很困惑,如果你没有明白我的意思,请告诉我,这样我可以举更多例子。


OP编辑后回答

文字常量是实际的文字值;我知道字面意思这个词会让你感到困惑,但一个例子可能会让你更清楚。如果您在 REPL 中键入以下内容:

>>> 2
2
>>> 'hello'
'hello'

2 and hello是实际的文字常量,与您的想法相反,您无法更改它们的值(好吧,您可以,作为初学者,最好不要知道这一点)。当你有:

stack = 2
stack = 3

您首先将常量文字(不过,老实说,不用担心它叫什么,它是数字 2)到stack. So, 名字stack指向值2。然后,通过说stack = 3, 你是not改变值2; 你现在正在命名stack指向另一个值,3.

就其价值而言,“常量字面量”听起来很复杂。想想像这样的价值观2 or 'John'等等。至于实际的常量(在编程中,常量指的是赋值后不能更改的变量),这个概念在 Python 中并不存在。一个常数是指,例如,你说stack = 2但你永远无法改变什么stack指向,否则你会得到一个错误。在Python中,这个概念不存在。

原答案:

对于初学者,我建议您阅读None、True 和 False 的故事(以及对文字、关键字和内置函数的解释)通过吉多:

另一方面,文字是描述常量值的表达式的元素。文字的示例有数字(例如 42、3.14 或 1.6e-10)和字符串(例如“Hello, world”)。文字由解析器识别,并且文字解析的确切规则通常非常微妙。

至于“常量”,你不能在Python中将变量声明为“真正的常量”。有一个内置常量 like True and False and None在 Python 中,但即使它们在 Python 2.X 中也不是“真正的常量”,因为它们可以被分配为指向另一个值:

True = False
if True:
    print 'Hey' 
else:
    print 'WAAAT!'

我希望这有帮助。如果没有,请编辑您的问题并举例说明常量和文字常量的确切含义。

Note: True and False等是Python 3.x中的关键字,所以如果你说True = False,解释器会提出SyntaxError: assignment to keyword.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

什么是常量和文字常量? 的相关文章

  • 函数名称未定义

    我有一段代码 看起来像这样 if name main main def main print hello 但是 当我尝试运行此代码时 出现错误 NameError 名称 main 未定义 我是否没有在函数 def main 的第一行定义名称
  • 按每个元素中出现的数字对字符串列表进行排序[重复]

    这个问题在这里已经有答案了 我有一个脚本 其目的是对不断下载到服务器上的空间数据集文件进行排序和处理 我的列表目前大致如下 list file t00Z wrff02 grib2 file t00Z wrff03 grib2 file t0
  • 学习Python中的解析器

    我记得我读过有关解析器的内容 您只需提供一些示例行 它就知道如何解析某些文本 它只是确定两条线之间的差异 以了解可变部分是什么 我以为它是用 python 写的 但我不确定 有谁知道那是什么图书馆吗 可能你的意思是模板制作器 http co
  • 删除 tkinter 文本默认绑定

    我正在制作一个简单的 tkinter 文本编辑器 但我想要所有默认绑定文本小部件如果可能的话删除 例如当我按Ctrl i它默认插入一个制表符 我制作了一个事件绑定来打印文本框中有多少行 我将事件绑定设置为Ctrl i以及 当我运行它时 它会
  • Discord.py 斜线命令在 cogs 中不起作用

    我正在构建一个不和谐的机器人 并且想要在 cogs 内使用斜杠命令 但这些命令不显示或工作 这是代码 cog guild ids 858573429787066368 861507832934563851 class Slash comma
  • 如何在plotly(python)中的刻度标签和图形之间添加空格?

    如果我使用绘图创建水平条形图 则每个条形的标签都与图表相对应 我想在标签和图表之间添加一些空间 填充 边距 我怎样才能做到这一点 Example import plotly offline as py import plotly graph
  • NumPy 数组与 SQLite

    我在 Python 中见过的最常见的 SQLite 接口是sqlite3 但是有什么东西可以很好地与 NumPy 数组或 rearray 配合使用吗 我的意思是 它可以识别数据类型 不需要逐行插入 并提取到 NumPy rec 数组中 有点
  • DataFrame.loc 的“索引器太多”

    我读了关于切片器的文档 http pandas pydata org pandas docs stable advanced html using slicers一百万次 但我从来没有理解过它 所以我仍在试图弄清楚如何使用loc切片Data
  • cxfreeze virtualenv 中缺少 distutils 模块

    从 python3 2 项目运行 cxfreeze 二进制文件时 我收到以下运行时错误 project dist project distutils init py 13 UserWarning The virtualenv distuti
  • 右键单击 QPushButton 上的 contextMenu

    对于我的应用程序 我在 Qt Designer 中创建了一个 GUI 并将其转换为 python 2 6 代码 关于一些QPushButton 与设计器创建 我想添加右键单击上下文菜单 菜单选项取决于应用程序状态 如何实现这样的上下文菜单
  • 尝试校准keras模型

    我正在尝试通过 Sklearn 实现来校准我的 CNN 模型CalibratedClassifierCV 尝试将其包装为KerasClassifier并覆盖预测功能但没有成功 有人可以说我做错了什么吗 这是模型代码 def create m
  • 如何在 python 中使用交叉验证执行 GridSearchCV

    我正在执行超参数调整RandomForest如下使用GridSearchCV X np array df features all features y np array df gold standard labels x train x
  • ImproperlyConfigured at / 不允许空静态前缀 - Django

    我正在使用 Django 上传 显示图像 该网站部署在 Heroku 上 下列的this https coderwall com p bz0sng教程我能够成功上传图像 但是 图像并未显示在模板中 然后我了解到我的 urls py 末尾应该
  • 使用 Python-VLC 的 PyInstaller:无属性“media_player_new”错误

    我使用 Python VLC 创建视频播放器 并使用 PyInstaller 在 Windows 10 计算机上生成可执行文件 最初 它给了我错误 Import Error Failed to load dynlib dll libvlc
  • 类变量:“类列表”与“类布尔值”[重复]

    这个问题在这里已经有答案了 我不明白以下示例的区别 一次类的实例可以更改另一个实例的类变量 而另一次则不能 示例1 class MyClass object mylist def add self self mylist append 1
  • 为什么我无法杀死 k8s pod 中的 python 进程?

    我试图杀死一个 python 进程 ps aux grep python root 1 12 6 2 1 2234740 1332316 Ssl 20 04 19 36 usr bin python3 batch run py root 4
  • 在字符串内打印单引号

    我想输出 XYZ s ABC 我在Python IDLE中尝试了以下3条语句 第一条和第二条语句输出 a before 带打印功能的第三条语句不输出 before 作为 Python 新手 我想了解为什么 之前输出 在第 1 条和第 2 条
  • 如何创建简单的梯度下降算法

    我正在研究简单的机器学习算法 从简单的梯度下降开始 但在尝试用 python 实现它时遇到了一些麻烦 这是我试图重现的示例 我获得了有关房屋的数据 居住面积 以英尺为单位 和卧室数量 以及最终的价格 居住面积 英尺2 2104 卧室 3 价
  • 在自定义 keras 层的调用函数中传递附加参数

    我创建了一个自定义 keras 层 目的是在推理过程中手动更改前一层的激活 以下是基本层 它只是将激活值乘以一个数字 import numpy as np from keras import backend as K from keras
  • 如何仅读取 CSV 文件每行的第一列 [重复]

    这个问题在这里已经有答案了 如何在Python中读取CSV文件每行的第一列 我的数据是这样的 1 abc 2 bcd 3 cde 我只需要循环第一列的值 另外 当我在 calc 中打开 csv 文件时 每行中的数据都在同一个单元格中 这正常

随机推荐