タグ付けされた質問 「eval」

evalは、プログラマーが同じ言語で記述された任意のコードを、コード内の文字列変数から実行できるようにする関数です。


3
eval、exec、compileの違いは何ですか?
私はPythonコードの動的評価を検討しており、eval()およびcompile()関数とexecステートメントに出くわしました。 evalとの違い、およびexecさまざまなモードがどのようにcompile()適合するかを誰かが説明できますか?
428 python  dynamic  eval  exec 

10
Pythonのeval()は何をしますか?
私がPythonで読んでいる本では、コードを使い続けています eval(input('blah')) ドキュメントを読んで理解しましたが、それによってinput()機能がどのように変わるかはまだわかりません。 それは何をするためのものか?誰かが説明できますか?
306 python  eval 

6
文字列として与えられた式を評価する
Rがそのeval()関数を使用して、たとえば文字列によって提供される計算を実行できるかどうか知りたいです。 これは一般的なケースです。 eval("5+5") しかし、10の代わりに私は得ます: [1] "5+5" 解決策はありますか?
283 r  eval  r-faq 

26
JavaScriptのeval()が悪ではないのはいつですか?
(スプレッドシートのような機能のために)ユーザーが入力した関数を解析するJavaScriptコードを書いています。私は式解析された可能性はJavaScriptに変換して実行しeval()、結果を得るために、その上に。 しかし、私はeval()それが悪であるのでそれを避けることができる場合は常に使用を避けてきました(そして、正しいかまたは間違って、評価されるコードはユーザーによって変更される可能性があるため、JavaScriptではさらに悪であると常に思っていました)。 それで、いつそれを使用してもよいですか?

6
Pythonのeval()とast.literal_eval()を使用していますか?
eval()可能な解決策として考え出されたいくつかのコードの状況があります。今では、これまで使用する必要はありませんでしたeval()が、それが引き起こす可能性のある潜在的な危険性に関する多くの情報に出くわしました。そうは言っても、私はそれを使用することに非常に警戒しています。 私の状況は、ユーザーからの入力があるということです。 datamap = raw_input('Provide some data here: ') datamap辞書が必要な場所。私は周りを検索し、eval()これがうまくいくことがわかった。データを使用する前に、入力のタイプを確認できる可能性があると思いました。これは、実行可能なセキュリティ対策になるでしょう。 datamap = eval(raw_input('Provide some data here: ') if not isinstance(datamap, dict): return 私はドキュメントを読みましたが、これが安全かどうかはまだわかりません。入力された直後、またはdatamap変数が呼び出された直後にevalはデータを評価しますか? あるastモジュールの.literal_eval()唯一の安全なオプションは?

10
Bashのevalコマンドとその一般的な使用法
bashのmanページを読んだ後、この投稿に関して。 evalコマンドが正確に何を行うのか、およびその典型的な使用法を理解するのにまだ問題があります。たとえば、次の場合: bash$ set -- one two three # sets $1 $2 $3 bash$ echo $1 one bash$ n=1 bash$ echo ${$n} ## First attempt to echo $1 using brackets fails bash: ${$n}: bad substitution bash$ echo $($n) ## Second attempt to echo $1 using parentheses fails bash: 1: command …
165 linux  bash  shell  scripting  eval 


5
PHPの変数からクラスをインスタンス化しますか?
私はこの質問が曖昧に聞こえるのを知っているので、例を使ってより明確にします: $var = 'bar'; $bar = new {$var}Class('var for __construct()'); //$bar = new barClass('var for __construct()'); これが私がやりたいことです。どうしますか もちろん、次のようにeval()を使用することもできます。 $var = 'bar'; eval('$bar = new '.$var.'Class(\'var for __construct()\');'); しかし、私はむしろeval()から離れたいと思います。eval()なしでこれを行う方法はありますか?
146 php  class  variables  eval 

12
なぜeval evilなのか?
LispとSchemeのプログラマーは、eval厳密に必要な場合を除いて、通常はそれを避けるべきだと言っています。いくつかのプログラミング言語について同じ推奨事項を見てきましたが、の使用に対する明確な議論のリストはまだ見ていませんeval。使用の潜在的な問題の説明はどこにありますかevalか? たとえば、私GOTOは手続き型プログラミングの問題を知っています(プログラムが読み取りにくくなり、保守が困難になり、セキュリティの問題が見つけにくくなるなど)。しかし、eval。 興味深いことに、GOTO継続に対しても同じ議論が当てはまるはずですが、たとえば、Schemersは継続が「悪」だとは言っていないようです。使用する場合は注意が必要です。彼らはeval継続を使用するコードよりもコードを使用するほうが眉をひそめる可能性がはるかに高いです(私が見る限り、私は間違っている可能性があります)。

8
「eval」を使用することが悪い習慣であるのはなぜですか?
次のクラスを使用して、曲のデータを簡単に保存しています。 class Song: """The class to store the details of each song""" attsToStore=('Name', 'Artist', 'Album', 'Genre', 'Location') def __init__(self): for att in self.attsToStore: exec 'self.%s=None'%(att.lower()) in locals() def setDetail(self, key, val): if key in self.attsToStore: exec 'self.%s=val'%(key.lower()) in locals() これは、if/elseブロックを書き出すよりもはるかに拡張可能だと思います。ただし、これevalは悪い習慣と見なされ、使用するのは安全ではないようです。もしそうなら、誰かが私に理由を説明し、上記のクラスを定義するより良い方法を私に示すことができますか?
138 python  eval 

1
クライアント側でのみ{} + {}がNaNになるのはなぜですか?Node.jsにないのはなぜですか?
一方では[] + []、空の文字列で[] + {}あり"[object Object]"、かつ{} + []あります0。なぜ{} + {}NaNなのですか? > {} + {} NaN なぜ私の質問ではありません({} + {}).toString()されて"[object Object][object Object]"いる間NaN.toString()で"NaN"、この部分はすでにここに答えを持っています。 私の質問は、これがクライアント側でのみ発生するのはなぜですか?サーバー側(Node.js){} + {}は"[object Object][object Object]"です。 > {} + {} '[object Object][object Object]' まとめ: クライアント側: [] + [] // Returns "" [] + {} // Returns "[object Object]" {} + [] …

20
.innerHTMLで挿入された<script>要素の実行
私はいくつかのコンテンツを要素に挿入するスクリプトを持っています innerHTML。 コンテンツは、たとえば次のようになります。 &lt;script type="text/javascript"&gt;alert('test');&lt;/script&gt; &lt;strong&gt;test&lt;/strong&gt; 問題は、&lt;script&gt;タグ内のコードが実行されないことです。私はそれを少しググりましたが、明確な解決策はありませんでした。jQueryを使用してコンテンツを挿入した場合、DOMに挿入される前に$(element).append(content);スクリプトパーツが取得evalされます。 誰かがすべての&lt;script&gt;要素を実行するコードのスニペットを持っていますか?jQueryコードは少し複雑だったので、どのように行われたのか本当に理解できませんでした。 編集: jQueryコードをのぞいてみると、jQueryがそれをどのように行うかを理解することができました。その結果、次のコードが生成されました。 Demo: &lt;div id="element"&gt;&lt;/div&gt; &lt;script type="text/javascript"&gt; function insertAndExecute(id, text) { domelement = document.getElementById(id); domelement.innerHTML = text; var scripts = []; ret = domelement.childNodes; for ( var i = 0; ret[i]; i++ ) { if ( scripts &amp;&amp; nodeName( ret[i], "script" ) …

2
Bashでevalを回避する必要があるのはなぜですか?代わりに何を使用する必要がありますか?
何度も何度も、私はStack Overflowを使用evalしてBashの回答を確認し、そのような「悪」な構成を使用するために、回答がbashされ、しゃれが意図されています。なぜevalそんなに邪悪なのですか? eval安全に使用できない場合、代わりに何を使用すればよいですか?
107 linux  bash  unix  eval 

8
bashの関数内でグローバル変数を変更する方法は?
私はこれで働いています: GNU bash, version 4.1.2(1)-release (x86_64-redhat-linux-gnu) 以下のようなスクリプトがあります: #!/bin/bash e=2 function test1() { e=4 echo "hello" } test1 echo "$e" どちらが戻ります: hello 4 しかし、関数の結果を変数に割り当てても、グローバル変数eは変更されません。 #!/bin/bash e=2 function test1() { e=4 echo "hello" } ret=$(test1) echo "$ret" echo "$e" 戻り値: hello 2 この場合のevalの使用について聞いたので、これを次のように実行しましたtest1。 eval 'e=4' しかし同じ結果です。 なぜ変更されないのか説明してもらえますか?test1関数のエコーを保存しretてグローバル変数を変更するにはどうすればよいですか?

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.