Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/278.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.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_Dynamic Typing - Fatal编程技术网

Python中不同类型的相同变量名

Python中不同类型的相同变量名,python,dynamic-typing,Python,Dynamic Typing,我发现自己经常做类似的事情: msg = ['This', 'is', 'a', 'message'] # (or built up programmatically) msg = ' '.join(msg) 它将变量msg的类型从list更改为str,就像Python这样的动态类型语言一样。不过,这是个好主意吗?这里没有太多的混淆,这些赋值是紧密相连的,但是如果msg以两种不同的形式在大间隔的代码位中使用会怎么样 但是,如果msg以两种不同的形式在大间隔的代码位中使用会怎么样呢 你一针见血

我发现自己经常做类似的事情:

msg = ['This', 'is', 'a', 'message']  # (or built up programmatically)
msg = ' '.join(msg)
它将变量
msg
的类型从
list
更改为
str
,就像Python这样的动态类型语言一样。不过,这是个好主意吗?这里没有太多的混淆,这些赋值是紧密相连的,但是如果
msg
以两种不同的形式在大间隔的代码位中使用会怎么样

但是,如果msg以两种不同的形式在大间隔的代码位中使用会怎么样呢

你一针见血。使用相同的引用名称只是为程序员在扫描代码时增加了一件需要注意的事情——仅出于这个原因,最好使用不同的名称

就我个人而言,我使用的是:

msg = ['This', 'is', 'a', 'message']
msg_str = ' '.join(msg)
但是,如果msg以两种不同的形式在大间隔的代码位中使用会怎么样呢

你一针见血。使用相同的引用名称只是为程序员在扫描代码时增加了一件需要注意的事情——仅出于这个原因,最好使用不同的名称

就我个人而言,我使用的是:

msg = ['This', 'is', 'a', 'message']
msg_str = ' '.join(msg)

我的建议是,在代码中不要只包含实际打算执行的操作,而不要包含其他操作。如果你想一想你的例子,它实际上做了什么

第一行接受一个值(特别是一个列表)并在其上放置一个标签,因为正如Sylvain Leroux在注释中提到的,这实际上是一个变量。然后,在第二行中,使用该值创建另一个值(这次是一个字符串),然后——这是重要的部分——从第一个值上取下标签,放在第二个值上

这真的是你想做的吗?基本上,第一个值(列表)是到您真正需要的最终值的一个一次性中间步骤,并且在其工作完成时被丢弃。在这种特殊情况下,代码可以很容易地编写为:

msg = ' '.join(['This', 'is', 'a', 'message'])
另一方面,如果您实际上需要两个不同的值,一个基于另一个,在代码中的其他地方独立使用,那么一定要按照martin Konecny的建议创建一个不同的变量名


这里重要的是要记住,变量实际上是应用于不同值的标签,可以从一个值移到另一个值。事实上,用几个不同的“标签”来“标记”一个值是相当标准的;i、 e.为多个变量分配相同的值。这里最重要的一点是值,而不是变量,它只是名称空间中的一个标签。

我的建议是,在代码中,您只需要做您真正想做的事情,而不需要做其他事情。如果你想一想你的例子,它实际上做了什么

第一行接受一个值(特别是一个列表)并在其上放置一个标签,因为正如Sylvain Leroux在注释中提到的,这实际上是一个变量。然后,在第二行中,使用该值创建另一个值(这次是一个字符串),然后——这是重要的部分——从第一个值上取下标签,放在第二个值上

这真的是你想做的吗?基本上,第一个值(列表)是到您真正需要的最终值的一个一次性中间步骤,并且在其工作完成时被丢弃。在这种特殊情况下,代码可以很容易地编写为:

msg = ' '.join(['This', 'is', 'a', 'message'])
另一方面,如果您实际上需要两个不同的值,一个基于另一个,在代码中的其他地方独立使用,那么一定要按照martin Konecny的建议创建一个不同的变量名


这里重要的是要记住,变量实际上是应用于不同值的标签,可以从一个值移到另一个值。事实上,用几个不同的“标签”来“标记”一个值是相当标准的;i、 e.为多个变量分配相同的值。这里重要的一点是值,而不是变量,它只是名称空间中的一个标签。

isinstance(msg,list)?我看这里没有问题。有时很难阅读,但我发现自己经常这样做。只需确保使用正确的类型进行计数。真正的问题是:对
列表
str
使用相同的标签有什么好处?为变量提供描述性名称对您非常有用,即使它会花费您额外的键击。
。.join('This is a message')='T.h.i.s。A.m、 e.s.s.a.g.e'
“它改变了变量的类型”否。它不改变。变量在Python中没有类型。它们只不过是引用内存中对象的标记而已?我看这里没有问题。有时很难阅读,但我发现自己经常这样做。只需确保使用正确的类型进行计数。真正的问题是:对
列表
str
使用相同的标签有什么好处?为变量提供描述性名称对您非常有用,即使它会花费您额外的键击。
。.join('This is a message')='T.h.i.s。A.m、 e.s.s.a.g.e'
“它改变了变量的类型”否。它不改变。变量在Python中没有类型。它们只不过是引用内存中对象的标记而已。名称空间是一个非常好的想法。我理解这样做的原因,但我想我不这么做的原因是,将类型名称附加到变量标识符上感觉很不和谐。我的意思是,如果变量名要指示(但不强制)数据类型,为什么还要使用动态类型呢?@user293594您通常会避免在名称中使用类型。但在名称冲突的情况下,最好(IMO)附加类型。名称空间是一个非常好的想法。我理解这样做的原因,但我想我不这么做的原因是,将类型名称附加到变量标识符上感觉不太和谐。我是说