回答編集履歴
4
コード自体を追加
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
バイトコード説明追加
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
コードの場所の修正
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による実行追加
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
|
+
```
|