栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

“ while 1”和“ while True”有什么区别?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

“ while 1”和“ while True”有什么区别?

从根本上讲,这并不重要,这样的细节并不会真正影响某些东西是否为“ pythonic”。

但是,如果您对琐事感兴趣,则有一些区别。

  1. 该内置布尔类型是不存在的,直到在Python 2.3,这样的目的是在古老的版本运行的代码往往使用的

    while 1:
    形式。例如,您将在标准库中看到它。

  2. True和False内置不是Python 3之前的保留字,因此可以分配给它们,以更改其值。这对上述情况有帮助,因为代码可以实现

    True = 1
    向后兼容,但是这意味着
    True
    每次使用该名称时都需要在globals字典中查找该名称。

  3. 由于上述限制,两个版本编译的字节码在Python 2中是不同的,因为存在不能用于的常量整数的优化

    True
    。因为Python可以在编译时告知
    1
    其始终非零,所以它消除了条件跳转,并且根本不会加载常量:

    >>> import dis

    def while_1():
    … while 1:
    … pass

    def while_true():
    … while True:
    … pass

    dis.dis(while_1)
    20 SETUP_LOOP 5 (to 8)

    3 >> 3 JUMP_ABSOLUTE 3
    6 POP_TOP
    7 POP_BLOCK
    >> 8 LOAD_ConST 0 (None)
    11 RETURN_VALUE

    dis.dis(while_true)
    20 SETUP_LOOP 12 (to 15)
    >> 3 LOAD_GLOBAL 0 (True)
    6 JUMP_IF_FALSE 4 (to 13)
    9 POP_TOP

    3 10 JUMP_ABSOLUTE 3
    >> 13 POP_TOP
    14 POP_BLOCK
    >> 15 LOAD_ConST 0 (None)
    18 RETURN_VALUE

因此,

while True:
它有点容易阅读,并且
while 1:
对旧版本的Python有点友善。由于这些天您不太可能需要在Python
2.2上运行,也不必担心循环的字节码计数,因此前者在某种程度上是可取的。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/637145.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号