file = ('cropdata.txt')
Run Code Online (Sandbox Code Playgroud)
我不确定是什么元组.这是file一个元组?元组与列表或字符串有何不同?
不,file是一个字符串.如果您是从单个对象创建元组,则它们总是需要用逗号分隔.这包括只有一个对象的元组(将逗号放在项目后面),否则,解释器将使用括号将表达式分组以进行操作.
this_is_a_tuple = ('cropdata.txt',) # Parenthesis are used for Order-of-operations grouping
this_is_a_string = ('cropdata.txt') # Notice, no comma.
this_is_also_a_tuple = 'cropdata.txt',
Run Code Online (Sandbox Code Playgroud)
但是,使用空括号创建一个空元组:
this_is_an_empty_tuple = () # Look mom, no comma!
Run Code Online (Sandbox Code Playgroud)
至于元组是什么- 它只是一个包含对其他对象的引用的对象.可以通过索引查找其他对象:
my_tuple = ('foo', 2)
my_tuple[0] # foo
my_tuple[1] # 2
Run Code Online (Sandbox Code Playgroud)
元组也是可迭代的:
for item in my_tuple:
...
Run Code Online (Sandbox Code Playgroud)
如果你熟悉list物体,tuple则非常相似.关键的区别在于a tuple是不可变的 - 一旦创建,你就无法改变元组(尽管你可能能够改变元组所拥有的对象).不变性(以及相关的可持续性)的好处有点超出了这个问题的范围,并且在其他地方得到了很好的回答......有关进一步的讨论,请参阅此问题或此问题.