teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

3

修正

2020/05/28 00:33

投稿

LouiS0616
LouiS0616

スコア35678

answer CHANGED
@@ -7,7 +7,7 @@
7
7
  ```
8
8
 
9
9
  どんな式でも実行してしまうevalに比べ、
10
- ast.literal_evalはリテラル形式の文字列しかパースしないので安全です。
10
+ ast.literal_evalはリテラル形式の文字列しかパースしないので比較的安全です。
11
11
  ```Python
12
12
  >>> password = 'MY_SECRET_PASSWORD'
13
13
  >>> eval(input())

2

例の統一

2020/05/28 00:33

投稿

LouiS0616
LouiS0616

スコア35678

answer CHANGED
@@ -30,8 +30,8 @@
30
30
  >>>
31
31
  >>> password = 'MY_SECRET_PASSWORD'
32
32
  >>> literal_eval(input())
33
- (1, 2)
33
+ (2, 3)
34
- (1, 2)
34
+ (2, 3)
35
35
  >>> literal_eval(input())
36
36
  print(*('{}: {}'.format(k, v) for k, v in locals().items()), sep='\n')
37
37
  Traceback (most recent call last):

1

修正

2020/05/28 00:33

投稿

LouiS0616
LouiS0616

スコア35678

answer CHANGED
@@ -11,8 +11,8 @@
11
11
  ```Python
12
12
  >>> password = 'MY_SECRET_PASSWORD'
13
13
  >>> eval(input())
14
- 2 + 3
14
+ (2, 3)
15
- 5
15
+ (2, 3)
16
16
  >>> eval(input())
17
17
  print(*('{}: {}'.format(k, v) for k, v in locals().items()), sep='\n')
18
18
  __name__: __main__
@@ -23,4 +23,20 @@
23
23
  __annotations__: {}
24
24
  __builtins__: <module 'builtins' (built-in)>
25
25
  password: MY_SECRET_PASSWORD
26
+ ```
27
+
28
+ ```Python
29
+ >>> from ast import literal_eval
30
+ >>>
31
+ >>> password = 'MY_SECRET_PASSWORD'
32
+ >>> literal_eval(input())
33
+ (1, 2)
34
+ (1, 2)
35
+ >>> literal_eval(input())
36
+ print(*('{}: {}'.format(k, v) for k, v in locals().items()), sep='\n')
37
+ Traceback (most recent call last):
38
+ File "<stdin>", line 1, in <module>
39
+ File "C:...\ast.py", line 99, in literal_eval
40
+ ...
41
+ ValueError: malformed node or string: <_ast.Call object at 0x0000018D769DCF10>
26
42
  ```