2016-05-02 6 views
-1

Python文字列を、引数がその文字列と等しい場合にTrueを返す関数に変換したいとします。 はここに私のコードです:[:]Python変数から静的文字列へ

In: x='foo' 
In: (lambda c: c==x)('foo') 
Out: True 
In: x=lambda c: c==x 
In: x('foo') 
Out: False 

私は、xを使用しようとしたと.__ repr_をX()、しかし、彼らは同様に失敗しました。

私が何かアドバイスをいただければ幸いです。

+1

正確に達成しようとしているのは何ですか? –

答えて

1

機能は正常です。しかし

x=lambda c: c==x

した後、あなたはそうx('foo')は明らかに虚偽である

'foo' == (lambda c: c==x)

に評価され、xの値を上書きしています。

+0

関数の本体の 'x'の値を、関数が定義されているときの文字列に強制的に設定するには、' x = lambda c、x = x:c == x'を設定するのが一つの方法です。 – chepner

+0

ありがとう@mhsmithと@chepner!それは完全に働いた – mibarg

1

x変数をラムダに代入して置き換えます。テストしたい場合は、ただprint(x)と問題が表示されます。変数名を変更するだけです。

static_string = "foo" 
x = lambda c: c==static_string 
assert(x("foo")) 
assert(not x("bar")) 
関連する問題