Python 組み込み関数 — eval
Python 組み込み関数 - eval
eval
evaleval(expression [, globals [, locals]])
この関数は、式文字列、またはコンパイル関数によってコンパイルされたコード オブジェクトを動的に実行するために使用されます。
パラメータ式は式文字列、またはコンパイルされたコードオブジェクトの名前です。
パラメータglobalsはグローバル名前空間であり、式の実行時にグローバルスコープの範囲を指定できます(特定のモジュールを使用できるように指定するなど)。 。
このパラメーターがデフォルトの場合、現在この関数を呼び出している現在のグローバル名前空間が使用されます。
パラメーター locals は、式の実行時にアクセスされるローカル名前空間を指定するために使用されます。
グローバル名前空間パラメーターが表示されているが、組み込みモジュールがデフォルトである場合、このモジュールは自動的にグローバル名前空間にコピーされます。
どのように設定されているかに関係なく、組み込みモジュールが使用できることを意味します。
両方の名前空間がデフォルトのメソッドを使用する場合、この関数を呼び出すときの名前空間は、対応する変数を見つけるために使用されます。
この機能を使用する理由?
この機能の理由は、動的言語とコンパイル言語の違いであるはずです。
コンパイル言語ではコードを動的に生成することは基本的に不可能であるため、
しかし動的言語は可能です。つまり、ソフトウェアがサーバーにデプロイされているということです。
ただし、変更が非常に少ない限り、コードのこの部分を直接変更する必要があり、ソフトウェア全体をリロードすることなく変更をすぐに実装できます。
もう 1 つは、この機能は機械学習で使用できます。例えば、ソフトウェアの使用頻度と方法に応じて、コードを動的に変更してユーザーの変更に適応できます。
これを考えると、コードを自己更新して改善を達成する生命力があるのでしょうか?
破壊的な動作をする場合、それは実際にはウイルスです。
>>> eval('1+1')
2
#全局命名空间为空,使用局部命名空间 >>> def make_fn(code): import math ALLOWED_LOCALS = {v:getattr(math,v) for v in filter( lambda x: x.startswith('_'),dir(math)) } return eval('lambda x: %s'%code ,None,ALLOWED_LOCALS) >>> f = make_fn('x+1') >>> print f(2)
#使用全局命名空间 >>> def make_fng(code): import math ALLOWED = {v:getattr(math, v) for v in filter(lambda x: not x.startswith('_'), dir(math)) } ALLOWED['__builtins__'] = None return eval('lambda x: %s' % code, ALLOWED, {}) >>> f = make_fng('cos(x)') >>> print f(9) -0.911130261885 >>> f = make_fng('cos(x*x)') >>> print f(9) 0.776685982022

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











多くのウェブサイト開発者は、ランプアーキテクチャの下でnode.jsまたはPythonサービスを統合する問題に直面しています:既存のランプ(Linux Apache MySQL PHP)アーキテクチャWebサイトのニーズ...

Scapy Crawlerを使用する場合、パイプラインの永続的なストレージファイルを書くことができない理由は?ディスカッションデータクローラーにScapy Crawlerを使用することを学ぶとき、あなたはしばしば...

Pythonクロスプラットフォームデスクトップアプリケーション開発ライブラリの選択多くのPython開発者は、WindowsシステムとLinuxシステムの両方で実行できるデスクトップアプリケーションを開発したいと考えています...

Python Process Poolは、クライアントが立ち往生する原因となる同時TCP要求を処理します。ネットワークプログラミングにPythonを使用する場合、同時のTCP要求を効率的に処理することが重要です。 ...

python functools.partialオブジェクトのpython functools.partialを使用してPythonを使用する視聴方法を深く探索します。

Python:Hourglassグラフィック図面と入力検証この記事では、Python NoviceがHourglass Graphic Drawingプログラムで遭遇する可変定義の問題を解決します。コード...

白い領域を見つけるためにPythonで高解像度の画像を処理する方法は? 9000x7000ピクセルの高解像度画像の処理、2つの写真を正確に見つける方法...

データの変換と統計:大規模なデータセットの効率的な処理この記事では、製品情報を含むデータリストを別の含有しているものに変換する方法を詳細に紹介します...
