【问题标题】:I'd like to know what's going on this Python program. I've included the code我想知道这个 Python 程序发生了什么。我已经包含了代码
【发布时间】:2010-07-15 22:09:20
【问题描述】:

这是代码:http://paste.pocoo.org/show/238093/

我现在的主要问题是:

  1. 第 37 行主要是这个程序的要点吗?它只是计算一次然后打印结果吗?例如:self.start + key*self.stepstart=1, key=4, step=2 [打印 9]

  2. 变量“值”在哪里实际发挥作用?第 39 行。

  3. 不担心程序的“异常”部分。我非常了解它在做什么。

  4. 1234563 ..您仍然必须编写自己的代码才能“让它发挥作用”。 :) 我只是不明白这些特殊方法有什么“特别”。

【问题讨论】:

    标签: python types containers


    【解决方案1】:
    1. 是的,或多或少。
    2. 这是个例外。如果有人为特定索引分配了一个值,序列会记住这一点并将返回该值而不是计算它。注意这里的代码实际上并没有用到这个函数。
    3. 改为随机注释:getitem 函数的最后 3 行可以更简洁地实现为 return self.changed.get(key, self.start + key*self.step) -- dict.get 允许您提供默认值,以便在缺少键时返回。
    4. 它们是“特殊的”,只是因为它们允许您覆盖某人执行yourthing[foo]yourthing[foo] = bar 时发生的情况。你看到第一个在这里发生;第二个是如果有人使用s[5] = 100 会发生什么—— 100 最终成为__setitem__ 调用的value

    【讨论】:

    • 优秀的 cmets/回复!我不能要求更好的了。我了解更多现在发生的事情,现在我可以继续讨论其他主题。感谢您的帮助,我真的很感激。
    • 如果有帮助,请按他的方式投赞成票,并将答案标记为已接受。这是在 StackOverflow 上表达感谢的适当方式。 (尽管评论可能也很受欢迎。)
    • 哦,好的。谢谢你让我知道。 “第一个计时器”。 :)
    猜你喜欢
    • 1970-01-01
    • 2019-11-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-01
    • 1970-01-01
    • 2023-02-24
    相关资源
    最近更新 更多