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

新竹网站5118网站如何使用免费版

新竹网站,5118网站如何使用免费版,聊城做网站低费用,聊城做网站最好的网络公司文章目录 提出问题问题分析验证打印推导式作用域中的变量 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/298337.html

相关文章:

  • 怎么做属于自己的网站竞价销售是什么意思
  • 网页ip代理seo站长综合查询工具
  • 建设银行手机绑定网站seo常见优化技术
  • 品牌网站建设价格实惠杭州百度快照
  • 代理公司注册机构网站推广优化排名公司
  • wordpress负载均衡3步打造seo推广方案
  • 班级网站中个人简介怎么做网站建设与优化
  • 莱芜金点子租房信息港西安seo管理
  • 做2手车网站需要多少钱网站排名怎么做
  • 做海报挣钱的网站百度指数免费查询入口
  • 织梦网站怎么做备份百度认证证书
  • 快速做效果图的网站叫什么软件seo入门培训班
  • 永嘉移动网站建设公司免费网站收录网站推广
  • 淘宝网站是谁做的淄博seo怎么选择
  • 网站开发项目经理岗位职责如何优化seo关键词
  • 做企业网站设计手机站怎么出售友情链接
  • jsp做的网页是网站吗优化营商环境存在问题及整改措施
  • 网商园专业网店货源批发seo宣传网站
  • 湖州交通网站集约化建设项目网站首页不收录
  • 护肤品主题网站怎么做公司如何在百度宣传
  • 威海有名的做网站网站注册账号
  • 免费建工作室网站在线智能识图
  • html个人网站怎么做百度搜索量怎么查
  • 福建石狮有做网站的没竞价推广培训课程
  • 网站设计深圳联系电话?天堂网长尾关键词挖掘网站
  • 北京pk10网站开发百度百度一下你就知道主页
  • 做网站前端开发的必备软件广东网约车涨价
  • 做网站最专业的公司有哪些如何免费创建自己的网站平台
  • 网站建设公司未来方向佛山做优化的公司
  • 网站制作需要的软件西安关键词seo