2017-03-16 88 views
3

如果我有代码...哪些是“X”的技术术语“为X ...”

list = ['Clemont', 'Albert', 'Shiro'] 
for x in range(len(list)): 
    print(x) 

...你会为x技术术语在这里?我假设它是“迭代对象”,但也许这是一种误解;如果这不是一个误解,什么是迭代对象?

+1

“循环变量”也许? –

回答

3

“循环变量”和技术一样。

自从正式名称以来没有任何正式名称,它与任务说明的左手侧没有任何区别;同样的规则适用于“循环”变量,就像他们为赋值目标所做的一样。

在任何其他Python开发人员中调用它的“循环变量”会让你明白你的观点。


至于“什么是迭代对象?”,你可能错误地认为可迭代迭代器这是for循环所要求的,以便它能够正常工作,这些术语的良好分解已经存在in another StackOverflow question

10

x在这方面的正式名称为target,通过Python的语言参考如图所示:

for_stmt ::= "for" target_list "in" expression_list ":" suite 
       ["else" ":" suite] 

...定义为target_list(和target):

target_list  ::= target ("," target)* [","] 
target   ::= identifier 
        | "(" target_list ")" 
        | "[" target_list "]" 
        | attributeref 
        | subscription 
        | slicing 
        | "*" target 

如果您想要知道目标实际上可以接受或定义为什么,感到鼓励仔细阅读文档。按照最标准的含义,您使用某种简单的标识符,如变量名称(在这种情况下为x)来表示目标。

+1

但是'target'这个词在[任何旧作业](https://docs.python.org/3.3/reference/simple_stmts.html#assignment-statements)中都用于LHS,它并不特定于'for'循环。 –

+0

@tobias_k:是的。这不是特定的任何事情。 *暗示*从语法的角度来看,没有特殊的名称。 – Makoto

+1

我不同意;这只意味着两者都可以使用相同的语法。在与他人讨论时可能会使用更具体的术语,以使他们明白你在说什么。 –

2

我不知道是否有它的“官方”一词,但我已经看到了它叫做迭代变量循环变量。这不是特定于Python的,它在很多不同的语言中都很常见。

Google Ngrams找到更多匹配循环变量

enter image description here

0

我不知道这是否适合您的一个“技术术语”的定义,但表达“循环变量”在相当多的PEP文件中使用,例如对于iteratorsgenerators,尽管基本for循环本身似乎没有PEP。