gpt4 book ai didi

python - 如果你在python中单独写一个变量名会发生什么?

转载 作者:IT老高 更新时间:2023-10-28 21:07:14 25 4
gpt4 key购买 nike

最近我开始好奇,但以下虚假 python 代码的第 2 行发生了什么:

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

我开始感兴趣的原因是我正在尝试 Light Table 并尝试在“foo”上放置 watch 。它似乎导致 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)

关于python - 如果你在python中单独写一个变量名会发生什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21260745/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com