Python:concatented字符串,允许它调用元组

Python:concatented字符串,允许它调用元组,python,string,tuples,python-2.7,Python,String,Tuples,Python 2.7,在一个名为say'data'的文件中,我有一些元组: tuple1 = (1, 2, 3) tuple2 = (4, 5, 6) 在另一个文件中,我导入了数据文件,并有一个连接字符串以调用这些元组的函数 import data def string(tupleNumber): return 'tuple' + str(tupleNumber) 如果我尝试打印元组,会得到一个错误,因为数据中没有定义字符串(1) print data.tuple1 # This works

在一个名为say'data'的文件中,我有一些元组:

tuple1 = (1, 2, 3)
tuple2 = (4, 5, 6)
在另一个文件中,我导入了数据文件,并有一个连接字符串以调用这些元组的函数

import data

def string(tupleNumber):

    return 'tuple' + str(tupleNumber)
如果我尝试打印元组,会得到一个错误,因为数据中没有定义字符串(1)

print data.tuple1     # This works
print string(1)       # This also works
print data.string(1)  # This does not
出现以下结果:

(1, 2, 3)
tuple1

Traceback (most recent call last):
  File "C:/Python27/Scripts/tuplecall.py", line 10, in <module>
    print data.string(1)
AttributeError: 'module' object has no attribute 'string'
结果如下:

(1, 2, 3)
tuple1
(1, 2, 3)
然而,由于我的“数据”文件中有很多数据,我担心我在每个元组中加载“from data import*”是在浪费内存,当我需要它时,我可以像在第一种情况下那样调用它,但我显然缺少一些重要的东西

我还发现eval()不是最好的使用方法,但到目前为止,我发现它是唯一有效的方法。因此,如果有人能给我一些关于如何提高我的理解的想法,我将不胜感激

问候


SNIFFY。

您对string()的方法声明不在数据文件中,因此data.string()不起作用

您对string()的方法声明不在数据文件中,因此data.string()不起作用

这不是变量名的真正含义。
tuple1
tuple2
中的数字1和2要么意味着什么(例如
1
实际上意味着“1人”和
2
“2人”),要么不是,它们只是占位符

如果它们确实意味着什么,你可能应该使用字典:

>>> my_data = {1: (1,2,3), 2: (4,5,6)}
>>> my_data
{1: (1, 2, 3), 2: (4, 5, 6)}
>>> my_data[1]
(1, 2, 3)
>>> my_data[2]
(4, 5, 6)
如果它们没有,而您只有两个元组,那么您还可以使用一个列表:

>>> my_data = [(1,2,3), (4,5,6)]
>>> my_data[0]
(1, 2, 3)
>>> my_data[1]
(4, 5, 6)
>>> for tup in my_data:
...     print tup
... 
(1, 2, 3)
(4, 5, 6)

您肯定不需要使用eval。

这不是变量名的真正含义。
tuple1
tuple2
中的数字1和2要么意味着什么(例如
1
实际上意味着“1人”和
2
“2人”),要么不是,它们只是占位符

如果它们确实意味着什么,你可能应该使用字典:

>>> my_data = {1: (1,2,3), 2: (4,5,6)}
>>> my_data
{1: (1, 2, 3), 2: (4, 5, 6)}
>>> my_data[1]
(1, 2, 3)
>>> my_data[2]
(4, 5, 6)
如果它们没有,而您只有两个元组,那么您还可以使用一个列表:

>>> my_data = [(1,2,3), (4,5,6)]
>>> my_data[0]
(1, 2, 3)
>>> my_data[1]
(4, 5, 6)
>>> for tup in my_data:
...     print tup
... 
(1, 2, 3)
(4, 5, 6)

您肯定不需要使用eval。

您好,谢谢您的回复,每个元组包含特定情况的数据,大约有150个情况包含15个元素。每个案例都保存着永不更改的数据,因此我使用了元组,因为它是不可变的,并且希望保护数据。我刚刚用字典进行了测试,效果很好,如果您认为这是一种更好的方法,我将更改代码。在这种情况下,使用“导入数据”而不是“从数据导入*”导入数据确实更好。如果您能详细介绍不需要使用eval()的情况,这将大大有助于我的理解。再次非常感谢您的回复,每个元组包含一个特定案例的数据,大约有150个案例包含15个元素。每个案例都保存着永不更改的数据,因此我使用了元组,因为它是不可变的,并且希望保护数据。我刚刚用字典进行了测试,效果很好,如果您认为这是一种更好的方法,我将更改代码。在这种情况下,使用“导入数据”而不是“从数据导入*”导入数据确实更好。如果您能详细介绍不需要使用eval()的情况,这将大大有助于我的理解。再次感谢你,斯芬奇