当前位置: 首页 > wzjs >正文

做网站包含什么职位长治建设工程交易网

做网站包含什么职位,长治建设工程交易网,网站开发人员工资计入无形资产,app推广赚钱文章目录 提出问题问题分析验证打印推导式作用域中的变量 1打印推导式作用域中的变量 2类外使用列表推导式的例子 结论 提出问题 在执行以下代码定义类时 class A:a 42b list(a i for i in range(10))print(b)报错 NameError: name a is not defined以下代码同样报错 cl…

文章目录

    • 提出问题
    • 问题分析
    • 验证
      • 打印推导式作用域中的变量 1
      • 打印推导式作用域中的变量 2
      • 类外使用列表推导式的例子
    • 结论

提出问题

在执行以下代码定义类时

class A:a = 42b = list(a + i for i in range(10))print(b)

报错

NameError: name 'a' is not defined

以下代码同样报错

class A:a = 42b = [a + i for i in range(10)]print(b)

但以下代码不会报错

a = 9
class A:a = 42b = list(a + i for i in range(10))print(b)

且有以下输出(该结果为类定义时的输出)

[9, 10, 11, 12, 13, 14, 15, 16, 17, 18]

问题分析

  1. 类属性的定义
    在类定义中,a 是一个类属性,值为 42。
  2. 列表推导式的作用域
    列表推导式 list(a + i for i in range(10)) 在执行时,会尝试访问变量 a。然而,列表推导式有自己的局部作用域,它不会直接访问类定义中的变量 a。
  3. 作用域冲突
    在 Python 中,列表推导式的作用域规则是:
  • 列表推导式有自己的局部作用域。
  • 它可以访问外部作用域中的变量,但不会直接访问类定义中的变量。

验证

打印推导式作用域中的变量 1

class A:a = 42b = [print(locals(), globals()) for i in range(10)]print(b)

输出为

{'.0': <range_iterator object at 0x000001B060C71A50>, 'i': 0} {'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': <_frozen_importlib_external.SourceFileLoader object at 0x000001B060C96CD0>, '__spec__': None, '__annotations__': {}, '__builtins__': <module 'builtins' (built-in)>, '__file__': 'D:\\PycharmProjects\\exam\\exam\\250319\\code1.py', '__cached__': None}
{'.0': <range_iterator object at 0x000001B060C71A50>, 'i': 1} {'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': <_frozen_importlib_external.SourceFileLoader object at 0x000001B060C96CD0>, '__spec__': None, '__annotations__': {}, '__builtins__': <module 'builtins' (built-in)>, '__file__': 'D:\\PycharmProjects\\exam\\exam\\250319\\code1.py', '__cached__': None}
{'.0': <range_iterator object at 0x000001B060C71A50>, 'i': 2} {'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': <_frozen_importlib_external.SourceFileLoader object at 0x000001B060C96CD0>, '__spec__': None, '__annotations__': {}, '__builtins__': <module 'builtins' (built-in)>, '__file__': 'D:\\PycharmProjects\\exam\\exam\\250319\\code1.py', '__cached__': None}
{'.0': <range_iterator object at 0x000001B060C71A50>, 'i': 3} {'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': <_frozen_importlib_external.SourceFileLoader object at 0x000001B060C96CD0>, '__spec__': None, '__annotations__': {}, '__builtins__': <module 'builtins' (built-in)>, '__file__': 'D:\\PycharmProjects\\exam\\exam\\250319\\code1.py', '__cached__': None}
{'.0': <range_iterator object at 0x000001B060C71A50>, 'i': 4} {'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': <_frozen_importlib_external.SourceFileLoader object at 0x000001B060C96CD0>, '__spec__': None, '__annotations__': {}, '__builtins__': <module 'builtins' (built-in)>, '__file__': 'D:\\PycharmProjects\\exam\\exam\\250319\\code1.py', '__cached__': None}
{'.0': <range_iterator object at 0x000001B060C71A50>, 'i': 5} {'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': <_frozen_importlib_external.SourceFileLoader object at 0x000001B060C96CD0>, '__spec__': None, '__annotations__': {}, '__builtins__': <module 'builtins' (built-in)>, '__file__': 'D:\\PycharmProjects\\exam\\exam\\250319\\code1.py', '__cached__': None}
{'.0': <range_iterator object at 0x000001B060C71A50>, 'i': 6} {'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': <_frozen_importlib_external.SourceFileLoader object at 0x000001B060C96CD0>, '__spec__': None, '__annotations__': {}, '__builtins__': <module 'builtins' (built-in)>, '__file__': 'D:\\PycharmProjects\\exam\\exam\\250319\\code1.py', '__cached__': None}
{'.0': <range_iterator object at 0x000001B060C71A50>, 'i': 7} {'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': <_frozen_importlib_external.SourceFileLoader object at 0x000001B060C96CD0>, '__spec__': None, '__annotations__': {}, '__builtins__': <module 'builtins' (built-in)>, '__file__': 'D:\\PycharmProjects\\exam\\exam\\250319\\code1.py', '__cached__': None}
{'.0': <range_iterator object at 0x000001B060C71A50>, 'i': 8} {'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': <_frozen_importlib_external.SourceFileLoader object at 0x000001B060C96CD0>, '__spec__': None, '__annotations__': {}, '__builtins__': <module 'builtins' (built-in)>, '__file__': 'D:\\PycharmProjects\\exam\\exam\\250319\\code1.py', '__cached__': None}
{'.0': <range_iterator object at 0x000001B060C71A50>, 'i': 9} {'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': <_frozen_importlib_external.SourceFileLoader object at 0x000001B060C96CD0>, '__spec__': None, '__annotations__': {}, '__builtins__': <module 'builtins' (built-in)>, '__file__': 'D:\\PycharmProjects\\exam\\exam\\250319\\code1.py', '__cached__': None}
[None, None, None, None, None, None, None, None, None, None]

可以看到可访问的变量中没有a

打印推导式作用域中的变量 2

a = 9
class A:a = 42b = [print(locals(), globals()) for i in range(10)]print(b)

输出为

{'.0': <range_iterator object at 0x000001CB73A18BD0>, 'i': 0} {'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': <_frozen_importlib_external.SourceFileLoader object at 0x000001CB738B6CD0>, '__spec__': None, '__annotations__': {}, '__builtins__': <module 'builtins' (built-in)>, '__file__': 'D:\\PycharmProjects\\exam\\exam\\250319\\code1.py', '__cached__': None, 'a': 9}
{'.0': <range_iterator object at 0x000001CB73A18BD0>, 'i': 1} {'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': <_frozen_importlib_external.SourceFileLoader object at 0x000001CB738B6CD0>, '__spec__': None, '__annotations__': {}, '__builtins__': <module 'builtins' (built-in)>, '__file__': 'D:\\PycharmProjects\\exam\\exam\\250319\\code1.py', '__cached__': None, 'a': 9}
{'.0': <range_iterator object at 0x000001CB73A18BD0>, 'i': 2} {'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': <_frozen_importlib_external.SourceFileLoader object at 0x000001CB738B6CD0>, '__spec__': None, '__annotations__': {}, '__builtins__': <module 'builtins' (built-in)>, '__file__': 'D:\\PycharmProjects\\exam\\exam\\250319\\code1.py', '__cached__': None, 'a': 9}
{'.0': <range_iterator object at 0x000001CB73A18BD0>, 'i': 3} {'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': <_frozen_importlib_external.SourceFileLoader object at 0x000001CB738B6CD0>, '__spec__': None, '__annotations__': {}, '__builtins__': <module 'builtins' (built-in)>, '__file__': 'D:\\PycharmProjects\\exam\\exam\\250319\\code1.py', '__cached__': None, 'a': 9}
{'.0': <range_iterator object at 0x000001CB73A18BD0>, 'i': 4} {'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': <_frozen_importlib_external.SourceFileLoader object at 0x000001CB738B6CD0>, '__spec__': None, '__annotations__': {}, '__builtins__': <module 'builtins' (built-in)>, '__file__': 'D:\\PycharmProjects\\exam\\exam\\250319\\code1.py', '__cached__': None, 'a': 9}
{'.0': <range_iterator object at 0x000001CB73A18BD0>, 'i': 5} {'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': <_frozen_importlib_external.SourceFileLoader object at 0x000001CB738B6CD0>, '__spec__': None, '__annotations__': {}, '__builtins__': <module 'builtins' (built-in)>, '__file__': 'D:\\PycharmProjects\\exam\\exam\\250319\\code1.py', '__cached__': None, 'a': 9}
{'.0': <range_iterator object at 0x000001CB73A18BD0>, 'i': 6} {'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': <_frozen_importlib_external.SourceFileLoader object at 0x000001CB738B6CD0>, '__spec__': None, '__annotations__': {}, '__builtins__': <module 'builtins' (built-in)>, '__file__': 'D:\\PycharmProjects\\exam\\exam\\250319\\code1.py', '__cached__': None, 'a': 9}
{'.0': <range_iterator object at 0x000001CB73A18BD0>, 'i': 7} {'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': <_frozen_importlib_external.SourceFileLoader object at 0x000001CB738B6CD0>, '__spec__': None, '__annotations__': {}, '__builtins__': <module 'builtins' (built-in)>, '__file__': 'D:\\PycharmProjects\\exam\\exam\\250319\\code1.py', '__cached__': None, 'a': 9}
{'.0': <range_iterator object at 0x000001CB73A18BD0>, 'i': 8} {'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': <_frozen_importlib_external.SourceFileLoader object at 0x000001CB738B6CD0>, '__spec__': None, '__annotations__': {}, '__builtins__': <module 'builtins' (built-in)>, '__file__': 'D:\\PycharmProjects\\exam\\exam\\250319\\code1.py', '__cached__': None, 'a': 9}
{'.0': <range_iterator object at 0x000001CB73A18BD0>, 'i': 9} {'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': <_frozen_importlib_external.SourceFileLoader object at 0x000001CB738B6CD0>, '__spec__': None, '__annotations__': {}, '__builtins__': <module 'builtins' (built-in)>, '__file__': 'D:\\PycharmProjects\\exam\\exam\\250319\\code1.py', '__cached__': None, 'a': 9}
[None, None, None, None, None, None, None, None, None, None]

可以看到可访问的变量中有a,且其值为全局变量a的值。

所以这种情况下列表推导式可以正常创建列表

a = 9
class A:a = 42b = [a+i for i in range(10)]print(b)

输出为

[9, 10, 11, 12, 13, 14, 15, 16, 17, 18]

类外使用列表推导式的例子

a = 9
b = list(print(locals(), globals()) for i in range(10))
print(b)

输出为

[9, 10, 11, 12, 13, 14, 15, 16, 17, 18]

结论

在Python 3中,生成器表达式和列表推导式在类作用域中的行为可能不会自动捕获类属性,因为它们是在嵌套作用域中运行的。

例如,在类定义中,当在类似列表推导或生成器表达式中引用类变量时,这些表达式实际上是在新的作用域中被评估的。
由于类的作用域不会被隐式地传递到内部的函数或生成器中,这可能导致变量无法找到的情况。也就是说,生成器表达式中的a可能无法访问到类属性a,从而导致NameError。

因此,当列表推导式尝试访问 a 时,它会抛出 NameError,因为 a 不在列表推导式的局部作用域中,也不在全局作用域中。

http://www.dtcms.com/wzjs/786574.html

相关文章:

  • 佛山市企业网站建设哪家好关键词优化排名用什么软件比较好
  • 建筑公司网站首页图片注册公司网站地址该如何填
  • 动态效果的网站建设技术wordpress sensica
  • 个人免费网站深圳网站建设推广优化公司
  • 东莞制作网站的联系方式四川省住房和建设厅网站
  • 云建造网站互联网网站如何做流量统计
  • 泰安网站建设如何做英文的小说网站有哪些
  • 关于做网站的总结长沙企业网站
  • 做团餐 承包食堂的企业网站html5快速建站
  • 重庆建设工程信息网官网首页寿光网站建设优化
  • 网页设计与网站建设教学视频网站时间特效
  • 包头住房和城乡建设厅网站网络运营管理
  • 大连做网站孙晓龙秦皇岛城乡建设局和住建局官网
  • 网站做301需要备案吗注册一个公司
  • 做网站网络公司无收入济南定制网站建设
  • 金华网站建设制作免费查企业法人
  • 营销型企业网站建设包括什么wordpress收款生成源码
  • 政务网站建设经验交流发言用插件做网站
  • 做游戏网站年入百万大连网站制作流程
  • 产品毕业设计网站建设怎么查网站是在哪里备案的
  • 网站建设中药尽量使用图片手机网站设计机构
  • 付网站建设费用 会计科目杭州做网站博客
  • 电子商务网站建设设计报告广州软件开发软件公司
  • 网站建设公司销售前景本溪 网站建设 做网站
  • 开发高端网站建设佛山做网站推广的公司
  • 电脑做视频的网站比较好杭州集团公司网站制作
  • 美橙互联网站建设网站怎么做中英文交互
  • 做免费的小说网站可以赚钱吗工程建设概况
  • 做网站 嵌入支付重庆市造价信息网官网
  • 加强经管学院网站建设做网站要搭建本地服务器么