繁体   English   中英

为什么python即使没有定义我的对象也能识别它?

[英]Why does python recognise my object even when I haven't defined it?

美好的一天!

我正在阅读并尝试学习Python的书中的样本可以帮助我吗?

对于下面显示的代码。 我从来没有定义过“ each_score”,那么为什么这个“ each_score”会被Python识别并运行正常呢?

scores={}
result_f=open("py score.txt")
for line in result_f:
    (name,score)=line.split()
    scores[score]=name
result_f.close()

print("The top scores were:")
for each_score in scores.keys():
    print('surfer '+scores[each_score]+' scored '+each_score)

顺便说一下,文本文件的内容很简单,如下所示:

Johnny 8.65
Juan 9.12
Joseph 8.45
Stacey 7.81
Aideen 8.05
Zack 7.21
Aaron 8.31

不,您已经在for循环中定义了它。

在您的示例中,变量应从键中获取第一个值,在第二次迭代中,应获取第二个值,依此类推。

您正在循环中定义它。 每次迭代each_score都会获取score.keys()的当前值。

注意-不是答案,而是一个很大的注释,不会在注释字段中格式化...只是一些学习技巧(由于电池快要耗尽,我必须写得很快...)

您应该在需要自动资源关闭的地方使用with (请参阅高级手册)...理解可能很有用(请参见下面的dict位)...变量的“正确”命名也很好-在这种情况下, surfer_scores ...拆开诸如for surfer, score元组for surfer, score也增加了可读性,并且使用字符串格式而不是concat'ing也很有用。

因此,在您完成了必要的学习工作之后,上面的代码可能会变成类似以下内容:

with open('py score.txt') as fin:
    surfer_scores = dict(line.split() for line in fin)

for surfer, score in surfer_scores.iteritems():
    print('Surfer {} scored {} points'.format(surfer, score))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM