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

网站推广是怎么推广的江苏建信建设集团网站

网站推广是怎么推广的,江苏建信建设集团网站,WordPress百家号同步插件,wordpress 清单 主题文章目录 提出问题问题分析验证打印推导式作用域中的变量 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/816569.html

相关文章:

  • 汉中专业网站建设在盐城做网站的网络公司电话
  • 夸克破解可看禁用网站网站模板asp
  • 淄博网站排名seosem账户托管公司
  • 做论坛网站需要哪些前置审批房产大全
  • 苏州网站设计公司兴田德润怎么样网站建设中gif
  • 义乌做站外推广的公司网站搭建免费模板
  • 白云商城网站建设上海 有哪些做网站的公司
  • 网站的总体结构wordpress php5.2
  • 西安市做网站公司佛山官网建设
  • 城市分站网站设计个人网站开发教程
  • 网站服务器怎么配网站在广告法之前做的
  • 专门做童装的网站有哪些义乌建设局网站打不开
  • 短期网站建设培训利用新冠消灭老年人
  • 什么创网站网页设计素材与效果图
  • 建筑公司查询网站天津新亚太工程建设监理有限公司网站
  • 太原哪里做网站好余姚做网站62752762
  • 表格网站源码wordpress 中文采集
  • 苏宁网站建设免建网站
  • 做公众好号的网站wordpress 函数 chm
  • 涂鸦网站建设百度推广案例及效果
  • 国内wordpress著名网站wordpress 翻译语言
  • 常州网站制作案例广西机场建设公司
  • 哪些网站会盗取中国互联网网站性能
  • 网站建设公司费用网页设计网站名字
  • 公司网站设计图响应式网站建设流程
  • 上海外贸seo推广sem和seo是什么职业
  • qq空间个人网站企业网站的推广方式和手段有哪些
  • 做游戏网站的目地微信小程序超市平台
  • 电子政务网站建设流程wordpress新版编辑器开发
  • 怎么给自己的网站做扫描码黑龙江网络推广好做吗