回答編集履歴

1

補足

2018/07/19 07:17

投稿

tachikoma
tachikoma

スコア3601

test CHANGED
@@ -7,3 +7,27 @@
7
7
  return eval(hex)
8
8
 
9
9
  ```
10
+
11
+
12
+
13
+ ----
14
+
15
+ `eval`は与えられた文字列をソースコードとして実行する命令です。`0xcd`は16進数整数リテラルなので、
16
+
17
+ ```Python
18
+
19
+ a = 0xcd
20
+
21
+ ```
22
+
23
+ と代入することができます。今、`s='0xcd'`のように、sの中に"16進数整数リテラル"の文字列があるとすると、欲しいのはsの中身をPythonに実行(or評価)させた結果です。この実行命令が`eval`です。ただし、evalを使うとコードインテリセンスが働かなかったり、hexにおかしな値を食わせてもPythonコードとして実行可能ならエラーなしに通ってしまうので、いい作法とはあまり言えませんので、`int(s, 0)`のほうがいいと思います。
24
+
25
+
26
+
27
+ ```python
28
+
29
+ eval("a = 2")
30
+
31
+ print(a) # <- 実行できるが、aが定義されてないと怒られる
32
+
33
+ ```