zoukankan      html  css  js  c++  java
  • Python源码学习(六)-PyCodeObject初探

    demo1.py

    def f():
    	c=1
    	print("Hello")
    
    a=9
    b=5	
    f();


    co.py

    source = open('demo1.py').read()
    co = compile(source, 'demo1.py', 'exec')
    print("type:")
    print(type(co))
    print("dir(co)")
    print(dir(co))
    print("co.co_name:" + co.co_name)
    print("co.co_names:")
    for i in co.co_names:
    	print(i)
    print("-" * 30)
    
    print("co.co_code:")
    print(co.co_code)
    print("-" * 30)
    
    print("co.co_consts:")
    for i in co.co_consts:
    	print(i)
    print("-" * 30)
    
    print("co.co_filename:")
    print(co.co_filename)
    print("-" * 30)
    
    print("co.nlocals:")
    print(co.co_nlocals)
    print("-" * 30)
    
    print("co.co_stacksize:")
    print(co.co_stacksize)
    print("co.co_lnotab;")
    print(co.co_lnotab)
    
    print("-" * 30)
    print("co.co_varnames:")
    for i in co.co_varnames:
    	print(i)


    结果

    type:
    <class 'code'>
    dir(co):
    ['__class__', '__delattr__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__le__', '__lt__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'co_argcount', 'co_cellvars', 'co_code', 'co_consts', 'co_filename', 'co_firstlineno', 'co_flags', 'co_freevars', 'co_kwonlyargcount', 'co_lnotab', 'co_name', 'co_names', 'co_nlocals', 'co_stacksize', 'co_varnames']
    co.co_name:<module>
    co.co_names:
    f
    a
    b
    ------------------------------
    co.co_code:
    b'dx00x00x84x00x00Zx00x00dx01x00Zx01x00dx02x00Zx02x00ex00x00x83x00x00x01dx03x00S'
    ------------------------------
    co.co_consts:
    <code object f at 0x00C0D2F0, file "demo1.py", line 1>
    9
    5
    None
    ------------------------------
    co.co_filename:
    demo1.py
    ------------------------------
    co.nlocals:
    0
    ------------------------------
    co.co_stacksize:
    1
    co.co_lnotab;
    b'	x04x06x01x06x01'
    ------------------------------
    co.co_varnames:
    


  • 相关阅读:
    c++中的explicit关键字
    数据结构简单要点总结(转)
    线程函数中访问成员变量的方法(转)
    C++中虚析构函数的作用(转)
    TransmitFile使用(发送文件)(转)
    静态分配和动态分配内存的区别(转)
    VC++ MFC 多线程及线程同步(转)
    CEdit & CRichEdit 使用技巧(转)
    memset用法详解(转)
    symbian 显示位图和SVG图(转)
  • 原文地址:https://www.cnblogs.com/phisy/p/3363590.html
Copyright © 2011-2022 走看看