2

それが可能かどうか疑問に思っていますか?

s = "> 4"
if 5 s:
    print("Yes it is.")
4

3 に答える 3

3

あなたがしたいeval

s = "> 4"
if eval("5"+s):
    print("Yes it is.")

に関するドキュメントは次のとおりですeval

入力文字列の内容が正確にわからない場合は、eval非常に安全ではないことに注意してください。注意して使用してください。

于 2013-03-06T07:36:52.387 に答える
3

これは、 を使用して簡単に実行できますeval()。ただし、非常に危険eval()であり、避けるのが最善です。

その他のアイデアについては、Python の安全な式パーサーを参照してください。

s最良のアプローチは、どこから来たのかによって異なると思います:

1)ユーザー入力の場合は、確かに使いたくないでしょうeval()。おそらく、式パーサーが最適です。

2)sがプログラムで設定されている場合は、関数に変換する方がよいでしょう。

pred = lambda x:x > 4
if pred(5):
    print("Yes it is.")
于 2013-03-06T07:38:30.387 に答える
3

あなたが本当にやりたいことは、比較 "> 4" を保存し、それをどこかで使用することであると仮定すると、次のようなことをお勧めします。

import operator

class Comparison(object):
    def __init__(self, operator, value):
        self.operator = operator
        self.value = value

    def apply(self, value):
        return self.operator(value, self.value)

s = Comparison(operator.gt, 4)

if s.apply(5):
    print("Yes it is.")
于 2013-03-06T07:46:30.853 に答える