<div>
<script type="text/rocketscript" data-rocketoptimized="true">var onloadCallback = function() {grecaptcha.render('recaptcha', {'sitekey' : 'blahblah-QBB', 'theme' : 'light' });};</script>
<div id="recaptcha">
<div>
<div style="width: 302px; height: 422px; position: relative;">
<div style="width: 302px; height: 422px; position: absolute;">
<iframe src="https://www.google.com/recaptcha/api/fallback?k=blahblah&hl=en&v=vxxxxxxx&t=xxxxx" frameborder="0" scrolling="no" style="width: 302px; height: 422px; border-style: none;">
</iframe>
</div>
</div>
<div style="border-style: none; bottom: 12px; left: 25px; margin: 0px; padding: 0px; right: 25px; background: #f9f9f9; border: 1px solid #c1c1c1; border-radius: 3px; height: 60px; width: 300px;">
<textarea id="g-recaptcha-response" name="g-recaptcha-response" class="g-recaptcha-response" style="width: 250px; height: 40px; border: 1px solid #c1c1c1; margin: 10px 25px; padding: 0px; resize: none; ">
</textarea>
</div>
</div>
</div>
<script async="" defer="" data-rocketsrc="https://www.google.com/recaptcha/api.js?onload=onloadCallback&render=explicit" type="text/rocketscript" data-rocketoptimized="true"></script>
</div>
输出:[42,43,44]
VS
a=0
b=1
class A:
a=42
b=list((a,a+1,a+2))
x=A()
print(x.b)
输出:[0,1,2]
所以在第一个例子中,使用了a = 42。但在第二个例子中,使用了a = 0。为什么会这样?
答案 0 :(得分:0)
好的,我在教授的幻灯片中找到了这个推理:
&#34;类块中定义的名称范围仅限于类块;它没有扩展到方法的代码块 - 这包括了解和生成器表达式,因为它们是使用函数作用域实现的。&#34; - 赵一宝博士
所以在示例2中,list((范围(3)中的i的a + i))是列表推导的示例。因此,它采用全局命名空间a = 0。它不识别a = 42,因为它是在类块A()中定义的。
希望有人可以审查我的推理,我不确定它是否完全正确。