什么是常量和文字常量?

时间:2014-06-09 14:47:44

标签: python constants literals

我正在学习Python,我只是与常量和文字常量相混淆。它们是什么?我们使用它们的目的是什么?它们与正常变量的区别是什么?

非常感谢。

编辑:

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

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

  

5.2。文字常数

     

文字常量的一个例子是5,1.23或a之类的数字   字符串'这是一个字符串'或者"它是一个字符串!"

     

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

它所说的,"它被称为文字,因为它是文字的 - 你从字面上使用它的价值",我只是没有得到这个部分。这本书是什么尝试的说我们在字面上使用这个值?另一个模糊点是数字2是常数,因为它的值不能改变。怎么可能?我们可以改变它,如:

stack = 2
stack = 3

首先,我将数字2分配给堆栈,然后我更改了堆栈的值(这是该书声称它是常量的数字2,因此无法更改)并为其分配了数字3。所以我很容易改变数字2的值。我真的很困惑,如果你没有明白我的观点,请告诉我,这样我可以提供更多的例子。谢谢你给你的时间。

1 个答案:

答案 0 :(得分:7)

在OP编辑后回答

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

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

2hello是实际的字面常量,与您的想法相反,您无法改变它们的价值(嗯,作为初学者,您最好不要知道它) 。当你有:

stack = 2
stack = 3

你首先要为stack分配常量字面值(不过,老实说,不要担心它的名称,它是数字2)。因此,名称stack指向值2 。然后,通过说stack = 3,您 更改值2; 您现在将名称stack指向另一个值3

对于它的价值,“常数字面积”听起来很复杂;只需将2'John'等值视为它们。关于实际常量(在编程常量中指的是赋值后无法更改的变量),这个概念在Python中并不存在。例如,当你说stack = 2但是你不能改变stack指向的内容或者你会得到一个错误时,常数就是。在Python中,这个概念不存在。

原始答案:

对于初学者,我建议你阅读Guido的The story of None, True and False (and an explanation of literals, keywords and builtins thrown in)

  

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

至于“常量”,你不能在Python中将变量声明为“真正的常量”。 Python中有Built-in ConstantsTrueFalse以及None,但即使它们在Python 2.X中也不是“真正的常量”,因为它们可以指定为指向另一个值:

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

我希望这会有所帮助。如果没有,请编辑您的问题并举例说明Constants和Literal Constants的确切含义。

注意:TrueFalse等是Python 3.x中的关键字,因此如果您说True = False,则解释程序将引发SyntaxError: assignment to keyword