Pythonにおけるeval()とinput()の用法の浅い分析
1.eval定義
expression:このパラメータは文字列で、pythonはglobals辞書とlocals辞書をグローバルおよびローカルのネーミングスペースとして使用し、expressionをpython式として解析および計算します.
globals:このパラメータは、グローバルなネーミングスペースを管理します.つまり、式を計算するときにグローバルなネーミングスペースの関数を使用することができます.このパラメータが提供され、カスタム_が提供されていない場合は、builtins__,では、現在の環境の_builtins__自分が提供したglobalsにコピーしてから計算します.についてbuiltins__,これはpythonの内蔵モジュール、つまりpythonが持参したモジュールで、importを必要とせずに使用できます.例えば、私たちが普段使っているint、str、absなどはこのモジュールの中にあります.その説明については、この文章を参照してください.クリックしてリンクを開きます.globalsが提供されていない場合はpythonのグローバルネーミングスペースが使用されます.
locals:このパラメータはローカルのネーミングスペースを管理しています.globalsと似ていますが、globalsに重複する部分がある場合、localsの定義はglobalsの定義を上書きします.つまり、globalsとlocalsに衝突する部分がある場合、localsは計算します.それには決定権があります.localsが提供されていない場合、デフォルトはglobalsです.
実際に異なるパラメータを追加する効果については、次の例を参照してください.
2.evalの使い方
eval()は、Python式で文字列を解析して実行し、結果を出力することができます.eval()関数は、文字列の2つの引用符を削除し、1つの変数として解釈します.単一引用符、二重引用符、eval()関数はintタイプとして解釈されます.三引用符はstrタイプとして解釈されます.
3.inputの使い方
ユーザー入力を取得する前に、input()関数には、=input(「ヒントの文字」)といういくつかのヒントの文字が含まれます.
ユーザーが文字を入力しても数値を入力しても、input()関数は文字列タイプで出力されます.したがってinput()の出力タイプはstrである.
実際の操作では、目的のタイプを得るために、以下のような強制的な変換措置が取られます.
eval
(expression, globals=None, locals=None) expression:このパラメータは文字列で、pythonはglobals辞書とlocals辞書をグローバルおよびローカルのネーミングスペースとして使用し、expressionをpython式として解析および計算します.
globals:このパラメータは、グローバルなネーミングスペースを管理します.つまり、式を計算するときにグローバルなネーミングスペースの関数を使用することができます.このパラメータが提供され、カスタム_が提供されていない場合は、builtins__,では、現在の環境の_builtins__自分が提供したglobalsにコピーしてから計算します.についてbuiltins__,これはpythonの内蔵モジュール、つまりpythonが持参したモジュールで、importを必要とせずに使用できます.例えば、私たちが普段使っているint、str、absなどはこのモジュールの中にあります.その説明については、この文章を参照してください.クリックしてリンクを開きます.globalsが提供されていない場合はpythonのグローバルネーミングスペースが使用されます.
locals:このパラメータはローカルのネーミングスペースを管理しています.globalsと似ていますが、globalsに重複する部分がある場合、localsの定義はglobalsの定義を上書きします.つまり、globalsとlocalsに衝突する部分がある場合、localsは計算します.それには決定権があります.localsが提供されていない場合、デフォルトはglobalsです.
実際に異なるパラメータを追加する効果については、次の例を参照してください.
>>>a, b, c = 1, 2, 3
>>>g = {'a': 5, 'b': 10}
>>>L = {'b': 50, 'c': 100}
>>>eval('a + b + c') # a,b,c
Out[4]: 6
>>>eval('a + b', g) # g , a,b , g
Out[5]: 15
>>>eval('a + b + c', g) # g ,
Traceback (most recent call last):
File "", line 1, in
eval('a + b + c', g)
File "", line 1, in
NameError: name 'c' is not defined
>>> eval('a + b + c', g, L) # L , g , L
Out[7]: 155
2.evalの使い方
eval()は、Python式で文字列を解析して実行し、結果を出力することができます.eval()関数は、文字列の2つの引用符を削除し、1つの変数として解釈します.単一引用符、二重引用符、eval()関数はintタイプとして解釈されます.三引用符はstrタイプとして解釈されます.
>>>a = eval(10) #
Traceback (most recent call last):
File "", line 1, in
a = eval(10)
TypeError: eval() arg 1 must be a string, bytes or code object
>>>a = eval('10') #
>>>a
Out[3]: 10
>>>type(a)
Out[4]: int
>>>b = eval("20") #
>>>b
Out[6]: 20
>>>type(b)
Out[7]: int
>>>c = eval('"30"') #
>>>c
Out[9]: '30'
>>>type(c)
Out[10]: str
3.inputの使い方
ユーザー入力を取得する前に、input()関数には、=input(「ヒントの文字」)といういくつかのヒントの文字が含まれます.
ユーザーが文字を入力しても数値を入力しても、input()関数は文字列タイプで出力されます.したがってinput()の出力タイプはstrである.
実際の操作では、目的のタイプを得るために、以下のような強制的な変換措置が取られます.
>>>a = input(' :')
:56
>>>type(a)
Out[2]: str
>>>b = int(input(' :'))
:64
>>>type(b)
Out[4]: int
>>>c = eval(input(' :'))
:72
>>>type(c)
Out[6]: int