python源码编译为字节码

#将源码编译成字节码
PI=3.14
#使用compile来编译源码
#conmpile三种编译方式,1、exec:用于编译模块源码,2、single:用于编译一个单独的python语句 3、用于编译一个eval表达式
with open('text.py','r') as f:
    text=f.read()
result=compile(text,'./text.py','exec')
print('code对象',result,'类型',type(result))
print('code对象具有的方法',dir(result))

#可以通过co_code来获得字节码
print('code对象的字节码',result.co_code)
#通过co_nams获取对象的所有名字
print('对象的名字',result.co_names)
# co_consts字段获得代码对象涉及的所有常量
print('code对象中所有常量',result.co_consts,type(result.co_consts))
for i in result.co_consts:
    if hasattr(i,'co_consts'):
        print(i,'类型',type(i),'有',i.co_consts)
    else:
        print(i,'类型',type(i),'没有')

# 字节码是一串不可读的字节序列,跟二进制机器码一样。如果想读懂机器码,可以将其反汇编
# 通过dis模块将其反汇编

import dis
print('反汇编的结果')
dis.dis(result)
print('*'*100)
# result=dis.dis(result.co_code)
# print(result,type(result))


参考:

Python源码学习笔记:Python程序执行过程与字节码_python 字节码转py_Blanker_711的博客-CSDN博客

你可能感兴趣的:(python,开发语言,数据库)