Pythonにおけるeval()とinput()の用法の浅い分析


1.eval定義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