2017-12-18 14 views
0

免責事項:私のタイトルは限り私が達成したいものと正確ではないかもしれないが、私は誰かが私の専門用語割り当てネストされた関数

を修正することができれば、私は2つの機能を持つそれぞれを持って更新することができます独立した目的で単独で使用することもできますが、時には2つを組み合わせて一度に両方のアクションを実行して1つの結果を返すことができます。これを行うには変数名に割り当てたい

基本的に私が望むことを行う第3の関数を、実際には単純なものとして作成します。これを行う方法を見つけるにはちょっとした挑戦になります。

def str2bool(string): 
    return string.lower() in ("yes", "true", "t", "1") 

def get_setting(string): 
    if string == 'cat': 
     return 'yes' 
    else: 
     return 'no' 

VALID_BOOL = str2bool(get_setting) 

print VALID_BOOL('cat') 

だから、基本的に私は、ユーザーを検索します()をget_setting、私は現実世界のコードでは

を評価するために呼び出すと、文字列パラメータを渡すことができます変数に2つの機能の組み合わせを割り当てたいです値を設定して返すと、その値をテストしてブール値として返すことになります

もう一度値を取得してクイックテストを行う3番目の関数を作成できます。私がしようとしているようにそれができるかどうかを知ることを学ぶために、私の異なる割り当てと呼び出しのバリエーションは機能していません。

+0

あなたは 'str2bool(get_setting(valid_string))'のようにそれらを組み合わせることができます。単一の名前で両方の名前を連鎖させたい場合は、3番目の関数が必要です(何らかの理由で 'def'を実行したくない場合は、ラムダだけでもかまいません)。 – glibdud

+0

申し訳ありませんが私のサンプルコードの関数名にいくつかのタイプミスがありました。私は – MikeM

答えて

1

ラムダの使用は簡単ですが、探しているものが正確かどうかわかりません。

例:

f = lambda astring : str2bool(get_setting(astring)) 

出力:

>>> f('cat') 
True 
+0

を更新しました。私はラムダで試してみることができました!構文を乱している必要があります、これは完璧な感謝の作品です! – MikeM

+0

うれしいです! – v4570

関連する問題