'>>'的含义在Python字节代码中

时间:2016-06-18 19:19:46

标签: python virtual-machine bytecode

我已经反汇编了以下python代码

my_list = []
my_list.append(df)

CSVdir = r"C:\Users\...."
realCSVdir = os.path.realpath(CSVdir)

if not os.path.exists(CSVdir):
    os.makedirs(CSVdir)


new_file_name = os.path.join(realCSVdir,'banana.csv')
new_file = open(new_file_name, 'wb')

for item in my_list:
    new_file.write(item)
    new_file.write("\n")

和生成的字节码

def factorial(n):
    if n <= 1:
        return 1
    elif n == 2:
        return 2
    elif n ==4:
        print('hi')
    return n * 2

'&gt;&gt;'是什么上述字节码中的符号代表什么?

1 个答案:

答案 0 :(得分:12)

他们是跳跃目标;位置较早*JUMP*字节码跳转到条件满足时。

第一跳:

         9 POP_JUMP_IF_FALSE       16

跳转到偏移量16,因此在偏移量16处,输出具有目标>>

4     >> 16 LOAD_FAST                0 (n)

从每个列的dis.disassemble() function docs个名称开始:

  

[...]

     
      
  1. 标有说明的指示,用>>表示,
  2.   

dis.findlabels() function

  

检测作为跳转目标的代码对象代码中的所有偏移量,并返回这些偏移量的列表。