4

我一直在研究“Learn Python the Hard Way”,到目前为止进展顺利,但我有几个问题:

the_count = [1, 2, 3, 4, 5]
fruits = ['apples', 'oranges', 'pears', 'apricots']
change = [1, 'pennies', 2, 'dimes', 3, 'quarters']

# this first kind of for-loop goes through a list
for number in the_count:
    print "This is count %d" % number

# same as above
for fruit in fruits:
    print "A fruit of type: %s" % fruit

# also we can go through mixed lists too
# notice we have to use %r since we don't know what's in it
for i in change:
    print "I got %r" % i

在这些 for 循环中,“number”、“fruit”和“i”分别是什么词重要吗?感觉就像 python 中的所有东西都需要定义,但如果这有意义的话,我们从来没有真正“定义”过数字。我不确定如何正确表达这个问题=/

4

4 回答 4

6

不,这些名称使用什么并不重要。您可以为这些标识符选择任何您希望的名称,只要它们是有效的 Python 标识符。

命名它们foo,,,,随便barvladiwostok当然,最好选择一个更具描述性的名称,fruit或者number在使用它们的上下文中是很棒的名称。

在任何情况下,以下所有 te 都是等价的:

for foo in fruits:
    print "A fruit of type: %s" % foo

for bar in fruits:
    print "A fruit of type: %s" % bar

for vladivostok in fruits:
    print "A fruit of type: %s" % vladivostok
于 2013-02-20T20:46:24.087 回答
1

您用来调用这些变量的实际单词并不重要。显然,如果您将它们称为其他名称,则必须使用新名称来指代它们。

即)你不可能有

for bla in the_count:
    print "This is the count &d" %number

因为你还没有定义数字是多少

Python 与许多其他语言的不同之处在于它的类型非常弱。您无需在任何地方明确说明变量的类型。

在 C/C++ 中,整数变量将被定义为

int i;
i=24;

在 Python 中,要定义一个变量,只需将其设置为某个值就足够了。例如,

i=24

将隐式定义 i 为整数。

同样,该行

for number in the_count:

将隐含地将 number 定义为与 the_count 相同类型的变量。

但是,变量的类型可以改变。只需将不同类型的值分配给变量,它就可以切换任意次数。

IE。

i=12        #i is an integer
i="bla"     #i has changed to a string
i=true      #i has changeed to a bool
于 2013-02-20T21:04:32.207 回答
0

正如其他人之前所说,这并不重要,因为 Python 足够聪明,并且能够在后台理解正在引用的对象的确切类型。您只需要担心变量的名称是否不奇怪和/或没有意义:)

另外,你说了这句话:

在这些 for 循环中,“number”、“fruit”和“i”分别是什么词重要吗?感觉就像 python 中的所有东西都需要定义,但如果这有意义的话,我们从来没有真正“定义”过数字。我不确定如何正确表达这个问题=/

Python 的优点是您不必基于类型编写任何代码,而是基于对象编写代码。我的意思是你不应该使用像这个示例这样的代码:

def hello(arg):
   if type(arg) is "str":
       // do something
   elif type(arg) is "list":
       // do another thing

您必须以这种方式尽可能减少限制,因为在 Python 中,许多函数实现了多态性,并且它们可以很好地接受传入参数的不同类型。这使得创建程序变得更加容易,因为该语言是强类型的,但是针对特定问题的编码良好的函数可以处理整数、浮点数和字符串。

于 2013-02-20T22:19:13.883 回答
0

for <name> in <value>:在语义上相当于一个循环

__iter = iter(<value>)
while 1:
    try:
        <name> = __iter.next()
    except StopIteration:
        break
    <block>

<name>因此,只要它通常适合作业的左侧,您就可以放置任何您想要的东西。通常,这是一个普通标识符,但您也可以使用属性:

class Namespace: pass
foo = Namespace()

for foo.bar in range(10):
    print foo.bar

l = [1,2,3,4,5]
for l[0] in range(10):
    print l
于 2013-02-20T20:52:27.753 回答