0

これは私が見つけたコードで、誰かに説明してもらいたいものです。

文字列を変数 y に割り当て、eval 関数で評価し、その内容を変数 y2 に割り当てると、インタープリターは true を返します。

>>> y = 'a string'
>>> y2 = eval(repr(y))
>>> y == y2
>>> True

この方法で str(y) を使用する場合:

>>> eval(str(y))
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<string>", line 1
a string
       ^
SyntaxError: unexpected EOF while parsing

許可されていません。何故ですか?

4

1 に答える 1

5

str()文字列自体を返すだけで、引用符で囲みませんrepr()

y2 = eval(repr(y))

次と同等です。

y2 = 'a string'

repr()引用符を追加するので、これは有効です。

y2 = eval(str(y))

次と同等です。

y2 = a string

引用符がないため、これは明らかにナンセンスです。

于 2015-05-19T01:35:48.830 に答える