我是python编程的初学者,我编写了以下程序,试图了解范围和输入规则。
a = 5
print(a)
a = "Hello World"
print(a)
我得到以下输出。
5
Hello World
我知道变量是在python中动态输入的。口译员理解' a'是a=5
赋值发生时的整数。
为同一个变量分配字符串值
答案 0 :(得分:9)
Python中的变量没有类型。它们只是价值观的名称。当然,这些值确实有类型,但变量并不关心。正如“John”可以是一个人在一个对话中的名称或者在另一个对话中的poodle的名称,a
可以是程序的一部分中int
的名称和str
在另一部分。
这是Python中变量与您可能来自的任何语言之间更大差异的一部分。
在C ++中,变量实际上定义了内存中值可以存活的位置。例如,int
变量有4个字节的内存,当你写a = 42
时,它会将数字42复制到这4个字节中。
在Python中,变量只是定义了对一个值的引用,该值在堆上的某个地方有自己的生命。当然,值的存储仍然必须有一个类型,但变量不是值的存储。
(如果C ++确实是您最熟悉的语言,那么将每个Python变量视为std::shared_ptr<boost::any>
类型可能会有所帮助。)
有些程序能够为不同类型重用变量名称是有用的,但还有一些程序更有可能是一个bug而不是故意的。有一些静态分析器,如mypy
,您可以使用它来检查此类错误。在大多数情况下,自动类型推断足以确定您希望变量的类型,并确保您始终使用该类型。如果不是,PEP 484(可能是Python 3.5的一部分,并且主要由mypy
处理)标准化了一种帮助这些分析器的方法,为它们提供了明确的类型提示。
最后一件事:如果你很好奇这是如何工作的,那么在Python中,每个范围的命名空间都只是一个字典。当您在模块 - 全局级别编写a = 5
时,它就像执行g['a'] = 5
一样,其中g
是模块的字典。本地和闭包有一些棘手的问题,但基本上,这是变量如何工作的关键。
答案 1 :(得分:5)
变量在Python中没有类型。对象有类型。 “变量”只是附加到对象的名称。示例中的名称a
只是一个标签。您可以将它附加到任何类型的对象。
答案 2 :(得分:0)
让我们逐行了解程序以及正在发生的事情..
第1行 - 您插入一个值5并将其分配给名为&#34; a&#34;
的标签第2行 - 打印标签&#34; a&#34;
第3行 - 您插入一个名为&#34; hello world&#34;并将其分配给标签&#34; a&#34;标签&#34; a&#34;现在指向价值&#34;你好世界&#34;而不是值5。
第4行 - 打印标签&#34; a&#34;
理解python解释的一个好方法是使用可视化工具。这是一个很好的在线免费应用程序。它为您提供了逐步执行程序的想法。 link to visualizer