Как открыть скомпилированный файл Python (.pyc) - PullRequest
0 голосов
/ 19 сентября 2019

В последнее время я действительно интересуюсь компьютерными науками и главным образом тем, как компьютеры запускают наш код.Я пытаюсь увидеть содержимое моего кода после компиляции моей программы на Python.Если я пытаюсь открыть его, он не открывается или создает странные символы

Я попытался опубликовать код в 'Pyc Python Extension' онлайн, но они возвращают «Мы не поддерживаем этот формат файла» , и при попытке просмотра на моем компьютере это выглядит как случайные символы

B

J~]y  ã               @   s   d dl Z dd„ ZdS )é    Nc              C   s<  t dƒ t dƒ t dƒ t dƒ t dƒ t dƒ xJtƒ } |  ¡ rpt| ƒ}|dkrZt dƒ qx|d  k rlt dƒ qxP q2t d

ƒ q2W d} | d krŽd} n (| d krœd} n | dkrªd}n | dkr¶d} td | ¡} xttƒ} x.yt | ƒ} PW qÌ t dƒ tƒ} Y qÌX qÌW || krt dƒ P qÄ || kr $ t dƒ qÄ || k rÄt dƒ qÄW d S) NzWelcomeЧТОБЫ УГЛЯТЬ, ЧТО NUMBERzВыберите свой уровень: z 1) Любительский (0-10) z 2) Энтузиаст (0-30) z 3) Продвинутый (0-70) z 4) Эксперт (0-100) é z! Выберите допустимый уровень! é zPick a DEFINED unitr é é é éG ée zPlease введите NUMBERz БОЛЬШОЙ JOBzA меньшее число ... zA большее число ...).pyÚplayGame sT

r) rrrrrr Ú s

РЕДАКТИРОВАТЬ: сайт не показывает это, но через код выше есть много "случайных" местквадраты, которые выглядят как 'without' без штриховки.

1 Ответ

0 голосов
/ 19 сентября 2019

Самый простой способ увидеть, что входит в файлы .pyc, - это разобрать функцию Python

import dis

def f():
    x = 1
    a = x
    print(a, x)

dis.dis(f)

, и результат должен выглядеть примерно так:

  2           0 LOAD_CONST               1 (1)
              2 STORE_FAST               0 (x)

  3           4 LOAD_FAST                0 (x)
              6 STORE_FAST               1 (a)

  4           8 LOAD_GLOBAL              0 (print)
             10 LOAD_FAST                1 (a)
             12 LOAD_FAST                0 (x)
             14 CALL_FUNCTION            2
             16 POP_TOP
             18 LOAD_CONST               0 (None)
             20 RETURN_VALUE

Каждая операция, которую вы видитездесь (LOAD_CONST, STORE_FAST и т. д.) есть связанный код операции (код операции), также известный как байт-код.Каждый байт-код хранится в двоичной форме в файле .pyc вместе со «списками» констант, переменных, функций и т. Д.

Это больше, чтобы объяснить байт-кодам, но если вам действительно интересно, как этоработает, есть много хороших статей в Интернете о них.Тем временем вы можете проверить этот один.

Если вы поняли их и вам понравился вопрос, вы можете попробовать изучить язык ассемблера .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...