擅长:python、mysql、java
<p>在您的示例中,<code>p1, p2, p3</code>是<em>标识符</em>,但是在<code>for</code>循环中,您将这些标识符的<em>名称</em>作为<em>字符串</em>添加到列表中。因此,您将获得字符串列表,而不是与这些字符串匹配的标识符的取消引用值列表。这种行为是有意的,也是需要的。你知道吗</p>
<p>标识符是代码中用来访问它们引用的值的命名句柄。一般来说,没有任何编程语言会自动将可能与某些本地标识符匹配的字符串转换为实际引用,因为在大多数情况下这是意外行为。考虑范围和安全性。你知道吗</p>
<p>通常,不应尝试将字符串转换为标识符。在python中,可以使用<code>getattr</code>。不过,我不在这里概述这一点,因为您不应该这样做。你知道吗</p>
<p>对于您的案例,更好的方法是直接在<code>list</code>或<code>dict</code>结构中实例化您的点:</p>
<pre><code># List:
plist = [(20, 50), (70, 80), (100, 140)]
# Dict:
pdict = {
'p1': (20, 50),
'p2': (70, 80),
'p3': (100, 140)
}
</code></pre>
<p>在这些情况下,您可以按如下方式访问您的点:</p>
<pre><code># For list case:
for i in range(3):
print(plist[i])
# For dict case:
for i in range(3):
print(pdict['p{:d}'.format(i)])
</code></pre>