파이썬 문에서 코드 객체를 생성합니다 mode
compile()
에 관한 'exec'
전달. 코드 객체의 co_code
속성에 액세스하면 원시 바이트 코드가 제공됩니다. 이것만으로도 다른 co_*
속성 없이는 쓸모가 없을 것입니다.
>>> c = compile('print a', '<string>', 'exec')
>>> dir(c)
['__class__', '__cmp__', '__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_lnotab', 'co_name', 'co_names', 'co_nlocals', 'co_stacksize', 'co_varnames']
>>> c.co_code
'e\x00\x00GHd\x00\x00S'
>>> c.co_names
('a',)
>>> c.co_consts
(None,)
>>> dis.dis(c)
1 0 LOAD_NAME 0 (a)
3 PRINT_ITEM
4 PRINT_NEWLINE
5 LOAD_CONST 0 (None)
8 RETURN_VALUE
사용 사례는 무엇입니까? –
파이썬 2.7.5 바이트 코드에서 공백이있는 pyc 파일을 다루는 동안주의를 기울였다. 파이썬 파일을 .pyc 파일로 직접 호출 할 수있다. 생성 된 바이트 코드를 사용하는 파이썬 코드에 대한 obfuscator를 작성하고 싶습니다. – imkendal
보안상의 이유로, 지루하고 재미 있기 때문에 들립니다. – imkendal