变量与常量

变量:在程序运行过程中,其值可以发生变化的量。

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

不论是变量还是常量,在创建时都会在内存中开辟一块空间,用于存储其值。

在Python中,变量不需要事先声明类型。这是由于Python的动态类型语言特性所决定的。变量可以直接使用,无需提前声明类型。例如,在下面的示例中,a、b、c、d四个变量可以直接使用,而不需要像在C或Java中一样事先声明其类型,例如int a, str b, list c, int d

>>> 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'。如果从数学的角度来理解,可能会错误地认为ba相同,都是 'Tom'。但实际上,b的值仍然是 'Jack'

请记住,在Python中,一切皆为对象,变量是对象的引用。

  • 执行a = 'Jack',解释器会创建一个字符串对象 'Jack' 和变量 a,并将 a 指向 'Jack' 对象。
  • 执行b = a,解释器会创建变量 b,并将其指向与变量 a 相同的字符串对象 'Jack'
  • 执行a = 'Tom',解释器会创建字符串对象 'Tom',并将 a 改为指向 'Tom' 对象,但这不影响变量 b

1762677-20201007160345007-1420712915.png

在Python中,常量是指在程序运行过程中其值不会发生改变的变量。常见的数学常数,例如圆周率π,通常被视为常量。

在Python中,并没有严格的机制来定义和保证常量不会被修改。事实上,常量仍然是变量,因为你可以在程序中重新给常量赋予新的值,而不会引发错误。即使你定义了一个名为 PI 的常量并赋值为 3.14159265359,你仍然可以将其修改为其他值,比如 10,而不会收到任何错误提示。

然而,习惯上,我们会使用全部大写的变量名来表示常量,这只是一种约定俗成的做法。通过使用大写变量名,我们可以清晰地表达该变量为常量的意图,并且在代码中更容易区分常量和其他变量。

通常情况下,常量会放置在代码的最顶部,并在全局范围内使用,以便于统一管理和修改常量的值。

标签: python, python下载, Python教程, Python技术, Python学习, Python学习教程, Python语言, Python开发, Python入门教程, Python进阶教程, Python高级教程, Python面试题, Python笔试题, Python编程思想