【问题标题】:Are keywords, operators, etc stored in memory like objects?关键字、运算符等是否像对象一样存储在内存中?
【发布时间】:2019-02-13 14:26:27
【问题描述】:

我试图在内存方面对 Python 对象和其他语言元素(例如关键字(例如 returndef)和运算符(例如 +-)进行概念区分。我知道对象存储在内存中,并且它们具有内存 ID 和大小。 id 和 size 可以分别用id(object)sys.getsizeof(object) 找到。

关键字和运算符等非对象是否也存储在内存中?如果是,它们是以与对象相同的方式存储还是不同? returndef 是否有像字符串 "Foo" 和 text 10 这样的槽?

【问题讨论】:

    标签: python object memory operators keyword


    【解决方案1】:

    它们不会浪费大量内存。我不确定脚本语言,但通常编译器会为运算符或关键字创建二进制代码。然后在您运行应用程序时将它们加载到内存中。

    【讨论】:

      【解决方案2】:

      Python 是一种编译语言;您习惯查看的 Python 源代码被编译为实际执行的类似程序集的字节码。

      例如:

      def foo(x):
          return x + 1
      

      变成

      >>> type(foo)
      <class 'function'>
      >>> dis.dis(foo)
        2           0 LOAD_FAST                0 (x)
                    2 LOAD_CONST               1 (1)
                    4 BINARY_ADD
                    6 RETURN_VALUE
      

      def 关键字本身没有被表示;相反,它会导致创建 function 对象。这个对象有一个__code__ 属性,它由上面显示的字节码序列组成。同样,return 关键字会导致生成 RETURN_VALUE 操作。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-02-08
        • 2021-04-15
        • 2021-07-17
        • 2020-04-20
        • 2021-01-20
        • 2013-09-15
        • 2012-11-25
        • 1970-01-01
        相关资源
        最近更新 更多