回答編集履歴

4

コード自体を追加

2021/05/22 13:50

投稿

ppaul
ppaul

スコア24670

test CHANGED
@@ -84,4 +84,26 @@
84
84
 
85
85
  Pythonバイトコードの説明は、[Python バイトコード命令](https://docs.python.org/ja/3/library/dis.html?highlight=%E9%80%86%E3%82%A2%E3%82%BB%E3%83%B3%E3%83%96%E3%83%AB#python-bytecode-instructions)を見てください。
86
86
 
87
- どの命令がどういうバイトに対応しているかを知りたければ、Pythonのソースをダウンロードして、Includeにある.hファイルを見てください。多分code.hだった思います。
87
+ どの命令がどういうバイトに対応しているかを知りたければ、Pythonのソースをダウンロードして、Includeにある.hファイルを見てください。~~多分code.hだった思います。~~
88
+
89
+ opcode.hでした。
90
+
91
+
92
+
93
+ バイトコード自体を見たければ、
94
+
95
+
96
+
97
+ ```python
98
+
99
+ >>> print(print_text.__code__.co_code)
100
+
101
+ b't\x00d\x01\x83\x01\x01\x00d\x00S\x00'
102
+
103
+ ```
104
+
105
+ で表示されるものです。
106
+
107
+ これと逆アセンブルした結果を見比べれば意味は分かります。
108
+
109
+ ただし、この表示では最初のバイトがtと表示されているので、全てを16進表示に変更した方が見やすい出しょう。

3

バイトコード説明追加

2021/05/22 13:50

投稿

ppaul
ppaul

スコア24670

test CHANGED
@@ -79,3 +79,9 @@
79
79
  Hello
80
80
 
81
81
  ```
82
+
83
+
84
+
85
+ Pythonバイトコードの説明は、[Python バイトコード命令](https://docs.python.org/ja/3/library/dis.html?highlight=%E9%80%86%E3%82%A2%E3%82%BB%E3%83%B3%E3%83%96%E3%83%AB#python-bytecode-instructions)を見てください。
86
+
87
+ どの命令がどういうバイトに対応しているかを知りたければ、Pythonのソースをダウンロードして、Includeにある.hファイルを見てください。多分code.hだったお思います。

2

コードの場所の修正

2021/05/22 13:36

投稿

ppaul
ppaul

スコア24670

test CHANGED
@@ -66,9 +66,9 @@
66
66
 
67
67
 
68
68
 
69
+ ```python
70
+
69
71
  >>> code = print_text.__code__
70
-
71
- ```python
72
72
 
73
73
  >>> print(code)
74
74
 

1

execによる実行追加

2021/05/22 13:32

投稿

ppaul
ppaul

スコア24670

test CHANGED
@@ -57,3 +57,25 @@
57
57
  10 RETURN_VALUE
58
58
 
59
59
  ```
60
+
61
+
62
+
63
+ 関数print_textを直接呼び出さずにコードを実行したければexecを使うこともできます。
64
+
65
+ 以下のようにやってください。
66
+
67
+
68
+
69
+ >>> code = print_text.__code__
70
+
71
+ ```python
72
+
73
+ >>> print(code)
74
+
75
+ <code object print_text at 0x000002D2A1B48030, file "<stdin>", line 1>
76
+
77
+ >>> exec(code)
78
+
79
+ Hello
80
+
81
+ ```