简介
任何编程语言中的变量都类似于数学中的变量。例如,我们在数学中写x = 5。这意味着x是一个变量的名字,它存储的是5的值。在编程中也是类似的情况。我们可以使用变量来存储数值,以便在我们的程序中对其进行操作。另外,在计算机中,这些数值被存储在具有长十六进制地址的内存位置。因此,直接使用地址来访问任何数值是非常困难的。因此,我们给内存地址起一个我们选择的名字,这样我们就可以随时引用它。
上面的图片显示,我们必须存储数值5,如图片所示,地址是一个复杂的数值,需要记住。因此,我们给这个内存位置命名为x。现在,当我们试图访问变量x的值时,我们将得到5。所以,现在我们对什么是变量有了基本的了解,让我们来理解Python中的变量。
Python 变量
所以,如果你来自除Python以外的任何编程语言,如Java、C++等,你可能已经看到了像这样的变量声明和使用。
//declaration of a variable x
int x;
//initialization of x
x = 5
//using x or operations on x
x = x + 10;
请注意,变量x的声明和初始化也可以同时进行。还有一件重要的事情是,初始化一个变量是不必要的。在大多数编程语言中,变量会自己取一个默认值,而在某些编程语言中,如果不进行初始化,变量会取一个垃圾值。例如,在Java中,如果你不初始化一个整数变量,它将采取默认的整数值,即0。
然而,从这个讨论中得出的结论是,在我们使用它们之前,必须先声明变量。我们不能在没有声明的情况下直接使用它们。另外,在声明它们的时候,必须要提到它们的数据类型。
在这些类型的语言中,变量的数据类型在声明变量时必须提及,并且在使用前必须声明,这些语言被称为静态类型语言。
Python是动态类型的,即Python中的变量在我们使用之前不需要声明。而且,在使用变量时,也不需要提到它们的类型。这通常被说成是Python是一种推断语言,即一种编程语言,它本身就很聪明,可以获得并理解变量的数据类型。
现在让我们看看在Python中用于命名变量的一些规则。
命名Python变量的规则。以下是Python变量的命名规则。
- 一个Python变量只能包含一组字符,即(A-Z)和(a-z),在其名称中只能包含一个特殊符号,即下划线(_)。
- 一个Python变量的名字必须以一个字符开始,即A-Z或a-z,或下划线(_)。例如,一些有效的变量名将是:val、Val、_val,等等。
- 所以,很明显,在上述规则中没有说明的任何东西都不能在Python中开始我们的变量名。例如,Python中的变量名不能以数字开头,如2x,345val等。另外,我们从第一条规则中知道,除了下划线()之外的特殊符号在Python变量名中是不允许的。因此,它们不能以Python中的变量名开始。然而,根据第二条规则,下划线()可以作为变量名的开头。
- Python 变量在本质上是区分大小写的。这意味着变量x和X是不一样的。另外,像var和vAr,var和vaR,var和Var,以及var和VAR这样的变量名也是不一样的。这意味着,即使一个字符的大小写不同,变量也是不一样的。
- 像其他编程语言一样,Python也有一堆关键词。这些关键字是为Python保留的,这些关键字不能作为变量名使用。所以,变量名不应该是任何一个Python关键字。例如,def是一个Python关键字,因此def不是一个有效的变量名。然而,由于Python是区分大小写的,Def可以在Python中作为变量名使用。
所以,现在让我们看一些程序来理解有关Python变量的其余概念。
用于创建一些变量并显示它们的Python程序。
if __name__ == "__main__":
# An Integer variable
marks = 80
# A floating point type variable
Distance = 10989.567
# A String variable
_name = "InterviewBit"
# printing all the variables
print(marks)
print(Distance)
print(_name)
pass
代码解释:
所以,在上面的代码中,我们有三个变量,我们根据上面已经讨论过的规则来命名它们。我们在注释中提到了数据类型,只是为了告诉你,在代码中,我们没有提到变量的数据类型,Python足够聪明,可以自动理解变量的数据类型。我们只是给这3个变量分配了一些值,然后打印了它们。没有对变量进行任何声明。
重新分配一个Python变量
一个Python变量也可以被重新赋值,以获取它之前所持有的一些其他值。同时,值的数据类型也可以改变。这在下面的代码中显示。
if __name__ == "__main__":
a = 10
print("After first assignment the value of a is", a)
a = "InterviewBit"
print("After second assignment the value of a is", a)
pass
代码解释
所以,如上面的代码所示,变量a首先被赋值为10,在打印它的值时,我们得到10。后来,它被赋值为字符串 "InterviewBit",我们得到的输出是 "InterviewBit"。
在Python中为多个变量分配相同的值
在Python中,我们可以像其他编程语言一样给多个变量分配相同的值。做到这一点的方法如下所示。
if __name__ == "__main__":
a = b = c = 10
print("a =",a,"b =",b,"c =",c)
pass
代码解释。
在上面的程序中,我们创建了3个变量,并为它们分配了相同的值。然后,我们打印了这些值,得到了想要的输出。
如何知道Python变量的数据类型?
任何变量的数据类型都可以通过使用Python中的type()函数来了解。让我们看看一个使用type()函数的Python程序。
if __name__ == "__main__":
#assigning a variable with integer type value
x = 5
# assigning a variable with floating point type value
y = 5.555
# assigning a variable with string type value
str = "InterviewBit"
# printing the data types of the variables
print(type(x))
print(type(y))
print(type(str))
pass
代码解释:
我们已经分配了3个具有3种不同数据类型的变量。现在,我们正在使用type()函数打印它们的数据类型。
Python 变量实际上是对象
你看到了上面代码的输出。你注意到什么了吗?是的,输出结果显示,这些变量属于一个特定的类。例如,类 "int",类 "float",或者类 "str"。这是因为 Python 是高度面向对象的。我们创建的变量实际上是 Python 中某个特定类的对象。
x = 10
这条语句创建了一个值为10的'int'类对象,而x在某种程度上是这个对象的指针,如下图所示。
所以,图片显示,写x = 10创建了一个int类的对象,它的值是10,x是这个对象的一个指针。基本上,在OOPS方面,我们可以说x=10,创建了一个int类的对象,x是指向该实例的引用。
现在,让我们看看当我们用Python写y = x时会发生什么。
x = 10
y = x
所以,我们给x赋值10,然后我们写y = x。下面的图片显示了Python中幕后发生的情况。
所以,正如你所看到的,y也成为对同一实例的引用。然而,如果我们给y分配一些不同的值,一个新的实例将被创建,y将成为该实例的引用。如下图所示。
x = 10
y = 20
所以,我们现在已经理解了什么是 Python 变量,以及它们是如何在幕后工作的。
为您提供后续服务
你可能已经听说过,与C++和Java相比,Python是相当慢的。其中一个主要原因就是你在上面看到的概念。创建一个对象(对象是在内存的堆区里面创建的)需要时间,python几乎为所有的东西都创建了对象,另一方面,C++在堆内存中创建这些原始数据类型,Java也是如此,除非我们想用Wrapper Classes创建一个对象。因此,与这些语言相比,Python很慢。
所以,我们现在已经涵盖了有关 Python 变量的几乎所有内容。让我们转到最后一个讨论话题,即全局变量和局部变量。
- **本地变量:**在一个函数中分配/声明的变量是它的本地变量。它们不能被外部函数访问。因此,它们被称为局部变量。下面是一个理解局部变量的例子。
if __name__ == "__main__":
def fun():
local = 10
print(local)
fun()
pass
代码解释:
在名为fun()的函数中,我们创建了一个名为local的变量。这是一个局部变量,因为它是在函数中声明的。我们只能在函数本身中访问这个变量。因此,当我们在主代码中调用这个函数fun()时,函数fun()进入了函数调用堆栈,并且只为这个函数创建了一个变量local,其值被打印出来。
如果我们试图从这个函数之外访问这个变量,我们会得到一个错误,如下所示。
if __name__ == "__main__":
def fun():
local = 10
print(local)
fun()
print(local)
pass
正如你所看到的,这个错误说 "local "没有被定义,因为它不在主函数的范围内。
- 全局变量。
全局变量是一个可以从程序中任何地方访问和使用的变量。然而,为了在一个函数内对全局变量进行修改,需要使用global关键字。请注意,只有在我们试图对函数中的全局变量进行修改时,才会使用global关键字。如果我们只是试图访问该变量,就没有必要使用这个全局关键字。如果不使用全局关键字,该变量将被视为该函数中的一个局部变量。
if __name__ == "__main__":
g = 10
def fun():
global g
print(g)
g = "InterviewBit"
print(g)
fun()
print(g)
pass
代码解释。
所以,在上面的代码中,一个全局变量在函数的顶部被赋值为10,并在函数内部使用了global关键字。它的值在函数中被打印出来,我们得到的输出是10。然后,我们把它的值改为字符串 "InterviewBit",我们可以看到在函数内部和全局都有变化。
所以,这就是关于 Python 中的变量的全部内容。我们希望你理解了一切,并深入了解了Python变量以及它们是如何在幕后工作的。
总结。
所以,我们看到,Python 变量不仅仅是变量,它们是对象。我们还看到了许多与变量的范围、它们的命名和它们的工作有关的概念。了解变量在Python中是如何工作的,对进一步了解概念非常重要。