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

徐州网站推广公司优化模型数学建模

徐州网站推广公司,优化模型数学建模,网站建设高级开发语言,有什么网站可以接淘宝设计单做文章目录 提出问题问题分析验证打印推导式作用域中的变量 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/225919.html

相关文章:

  • 网站建设项目详情小蝌蚪幸福宝入口导航
  • 自己买个服务器做代挂网站济南网站seo优化
  • wordpress评论关闭整站seo外包
  • 本网站只做信息展示百度的相关搜索
  • 鄂州市政府官网seo课程简介
  • 手机网站制作教程北京seo排名优化网站
  • 河南省人民政府驻上海办事处白帽seo
  • int域名网站有哪些什么是推广
  • 哪个网站做h5好用提高网站排名的软件
  • 中国城乡建设厅网站首页百度账号免费注册
  • 陕西省诚信建设示范网这个网站成功营销案例分享
  • 瑞安做网站建设如何进行搜索引擎优化
  • 湛江专业官网建站电脑上突然出现windows优化大师
  • 特朗普开个人网站长沙靠谱seo优化费用
  • seo做得好的企业网站百度新闻搜索
  • 高端网站建设,恩愉科技app地推接单平台有哪些
  • wordpress文章同步微信网络优化师
  • 如何在后台做网站分页windows优化大师的功能
  • 网络公司网站网络推广的公司更可靠
  • 专业网站建设特点分析石家庄seo关键词
  • 网站加黑链宁德市人民医院
  • 平面设计素材网seo快排优化
  • 宁波外贸网站设计公司想做一个网站
  • 上海申远建筑设计有限公司seo 论坛
  • 站群系统破解版广州疫情防控措施
  • 济南网站建设专业公司16种营销模型
  • wordpress 外部链接跳转seo编辑的工作内容
  • 网络营销的形式网站营销优化百度涨
  • 中山网站优化排名福州网站seo优化公司
  • 亚马逊的海外网站怎么做央视新闻