如果仅在python中编写变量名,会发生什么?

foob​​arbecue

最近,我开始好奇,但是以下伪造的python代码的第2行会发生什么:

def my_fun(foo,bar):
    foo
    return foo + bar

我变得感兴趣的原因是我正在尝试Light Table,并试图将手表放在“ foo”上。它似乎导致python解释器挂起。

我认为这行绝对没有影响并且不会引起任何错误是正确的吗?有人可以在这里解释翻译的功能吗?

奈杰尔·图弗内尔

内置的dis模块提供了一些帮助,您可以查看正在发生的情况

import dis

def my_fun(foo,bar):
    foo
    return foo + bar

dis.dis(my_fun)

dis.dis功能反汇编功能(是的,它可以拆卸本身),方法和类。

输出dis.dis(my_fun)为:

  4           0 LOAD_FAST                0 (foo)
              3 POP_TOP

  5           4 LOAD_FAST                0 (foo)
              7 LOAD_FAST                1 (bar)
             10 BINARY_ADD
             11 RETURN_VALUE

前两个字节码正是我们需要的:foo行。

这些字节码的作用如下:

  1. 第一个将对本地变量的引用foo推入堆栈(LOAD_FAST
  2. 第二个删除堆栈顶部(POP_TOP

基本上,foo行无效。(好吧,如果foo未定义变量,LOAD_FAST则会抛出NameError

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如果我超出Java中变量的限制,会发生什么?

来自分类Dev

如果我超出Java中变量的限制,会发生什么?

来自分类Dev

如果函数也是MATLAB中的变量,会发生什么?

来自分类Dev

如果仅在类中重写hashCode()并在Set中使用它,会发生什么情况?

来自分类Dev

当我在先前定义的通过ajax调用的函数中使用相同的变量名时会发生什么?

来自分类Dev

在Ruby和Python中会发生什么?如果变量在ruby中阻塞,为什么变量将为零,而在python中未定义?

来自分类Dev

在Ruby和Python中会发生什么?为什么在ruby中如果if块中的变量为零,而在python中未定义?

来自分类Dev

如果C尝试扫描整数变量中的字符会发生什么

来自分类Dev

在ActionScript 3中,如果不同事件同时更改变量的值会发生什么?

来自分类Dev

如果我在fortran中调用一个函数而未定义变量,会发生什么?

来自分类Dev

在ActionScript 3中,如果不同事件同时更改变量的值会发生什么?

来自分类Dev

如果我呼叫等待通知的条件变量会发生什么

来自分类Dev

如果将太多的require()传递给变量,会发生什么?

来自分类Dev

Python - 变量名中的变量?

来自分类Dev

如果Python线程在获取锁后死亡,会发生什么?

来自分类Dev

如果不删除 docker 中的网络会发生什么?

来自分类Dev

如果用户在 GA 会话中关闭 Cookie 会发生什么

来自分类Dev

Python变量名

来自分类Dev

如果在反引号中为命令表达式分配了变量,会发生什么情况

来自分类Dev

如果一个线程在 java 中重新分配一个变量会发生什么?

来自分类Dev

如果两个资源仅在Andorid的扩展方面不同,会发生什么?

来自分类Dev

如果两个资源仅在Andorid的扩展方面不同,那会发生什么?

来自分类Dev

Shell脚本中的list变量会发生什么

来自分类Dev

python中系统库已经采用和占用的变量名的命名约定是什么

来自分类Dev

在python中,当我们为变量分配新值时,旧变量会发生什么?

来自分类Dev

如果ThreadPool线程死亡,会发生什么?

来自分类Dev

如果ThreadPool线程死亡,会发生什么?

来自分类Dev

如果未设置枚举,会发生什么?

来自分类Dev

如果 QTimer 不停止会发生什么

Related 相关文章

  1. 1

    如果我超出Java中变量的限制,会发生什么?

  2. 2

    如果我超出Java中变量的限制,会发生什么?

  3. 3

    如果函数也是MATLAB中的变量,会发生什么?

  4. 4

    如果仅在类中重写hashCode()并在Set中使用它,会发生什么情况?

  5. 5

    当我在先前定义的通过ajax调用的函数中使用相同的变量名时会发生什么?

  6. 6

    在Ruby和Python中会发生什么?如果变量在ruby中阻塞,为什么变量将为零,而在python中未定义?

  7. 7

    在Ruby和Python中会发生什么?为什么在ruby中如果if块中的变量为零,而在python中未定义?

  8. 8

    如果C尝试扫描整数变量中的字符会发生什么

  9. 9

    在ActionScript 3中,如果不同事件同时更改变量的值会发生什么?

  10. 10

    如果我在fortran中调用一个函数而未定义变量,会发生什么?

  11. 11

    在ActionScript 3中,如果不同事件同时更改变量的值会发生什么?

  12. 12

    如果我呼叫等待通知的条件变量会发生什么

  13. 13

    如果将太多的require()传递给变量,会发生什么?

  14. 14

    Python - 变量名中的变量?

  15. 15

    如果Python线程在获取锁后死亡,会发生什么?

  16. 16

    如果不删除 docker 中的网络会发生什么?

  17. 17

    如果用户在 GA 会话中关闭 Cookie 会发生什么

  18. 18

    Python变量名

  19. 19

    如果在反引号中为命令表达式分配了变量,会发生什么情况

  20. 20

    如果一个线程在 java 中重新分配一个变量会发生什么?

  21. 21

    如果两个资源仅在Andorid的扩展方面不同,会发生什么?

  22. 22

    如果两个资源仅在Andorid的扩展方面不同,那会发生什么?

  23. 23

    Shell脚本中的list变量会发生什么

  24. 24

    python中系统库已经采用和占用的变量名的命名约定是什么

  25. 25

    在python中,当我们为变量分配新值时,旧变量会发生什么?

  26. 26

    如果ThreadPool线程死亡,会发生什么?

  27. 27

    如果ThreadPool线程死亡,会发生什么?

  28. 28

    如果未设置枚举,会发生什么?

  29. 29

    如果 QTimer 不停止会发生什么

热门标签

归档