Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在python中更改变量的类型是一种好的做法吗?_Python - Fatal编程技术网

在python中更改变量的类型是一种好的做法吗?

在python中更改变量的类型是一种好的做法吗?,python,Python,我刚刚意识到Python可以让您这样做: n = '34' n = int(n) 这是个坏主意吗?当然,另一种选择是: nStr = '34' n = int(nStr) 在我看来,在大多数情况下,使用新名称是首选方法。这有助于避免以后可能出现的编程错误 显式比隐式好 可以重复使用该名称。例如,对于小的一次性脚本。 程序越大、越复杂,我就越推荐使用新名称。因此,这取决于上下文和手头的任务 重要提示:您不能使用赋值语句更改对象的类型,您可以对不同的对象重新使用相同的名称在Python中重新绑定

我刚刚意识到Python可以让您这样做:

n = '34'
n = int(n)
这是个坏主意吗?当然,另一种选择是:

nStr = '34'
n = int(nStr)

在我看来,在大多数情况下,使用新名称是首选方法。这有助于避免以后可能出现的编程错误

显式比隐式好

可以重复使用该名称。例如,对于小的一次性脚本。 程序越大、越复杂,我就越推荐使用新名称。因此,这取决于上下文和手头的任务


重要提示:您不能使用赋值语句更改对象的类型,您可以对不同的对象重新使用相同的名称

在Python中重新绑定到与第一个代码段相同的名称没有什么错,因此,如果您再也不想使用
n
的字符串表示,那么我认为这样做没有什么害处。在某些情况下,重新绑定也会节省内存,但这通常不太可能是一个实际问题。

好吧,在整数转换后,您是否仍然需要
n
的字符串表示形式?不,我不关心它。上下文是我从用户那里获取命令行参数。这取决于您需要什么。如果n不再有用,您可以更改其值或类型。把一个变量的名称看作是一个值的链接,没有人关心它链接了什么,只保留你需要的值。我认为,使用单独的变量通常会使读者更容易理解代码。例如,如果您正在解析一个XML,需要一个整数,但接收的数据是一个字符串。这可能没问题,但尽量避免这种情况,以避免潜在的错误。GC是否不收集不再在代码中使用的名称?我记得读过一篇文章说,
n=str(n)
不会节省内存。@JoseA。你在哪里读到的?@JoseA。什么意思?GC收集对象,而不是名称。@juanpa.arrivillaga是的,对不起。我的意思是,代码中不再使用(唯一)引用的对象。我不记得在哪里读过它,但它可能是错误的。我只是想澄清一下。我完全不同意这里的第一句话——在很多情况下(尤其是在OP的用例中),重用相同的名称确实会降低复杂性(名称越少=>复杂性越小)因此,提高了可读性,降低了代码后期出现编程错误的几率。FWIW这是一个完美的例子,说明了为什么这个问题应该以基于观点的方式来解决;)哦,是的:您实际上可以更改对象的类型,只需重新绑定
yourobj.\uuuu class\uuuuu
——但这通常是一个非常糟糕的主意@brunodesthuilliers
TypeError:\uu class\uuu分配仅支持堆类型或ModuleType子类
哪个Python版本,您在哪个类上尝试过?