2017-08-18 12 views
-1

入力の取得方法を選択できるget_input()関数を作成しようとしています。raw_inputを別の名前で使用するにはどうしたらいいですか?

ただし、入力パラメータが何であっても、私が得た方法はすべてNoneでした。これはメソッドがメインプログラムにインポートされ、実際にはパラメータにアクセスできないためです。

は、その後、私は他の場所で使用しても、関数の入力を簡素化するために関数を返したい

def get_input(style = 'raw'): 
    if style.lower() is 'arcpy': 
     return arcpy.GetParameterAsText 
    if style.lower() is 'raw': 
     return raw_input 

を試してみましたが、この方法の両方の設定のためのエラー

TypeError: 'NoneType' object is not callable 

を得ました。 get_input()は、この構成でNoneTypeオブジェクトのみを返すように見えます。

これを修正することで、raw_input()またはarcpy.GetParameterAsTextを別の名前で呼び出すことはできますか?

+4

'if '条件が一致しない場合、関数は何も返しません – khelwood

+3

また、比較のために' is'を使うべきではないことに注意してください。 –

+2

あなたが比較のために 'is'を使用しているという事実は、なぜ* if *' if'条件も一致しないこと、そしてあなたの関数が 'None'を返す理由です。 – kindall

答えて

1

問題はifステートメントにありました。比較のためにisを使用しないでください。コードを編集する

def get_input(style = 'raw'): 
    if style.lower() == 'raw': 
     return raw_input 
    if style.lower() == 'arcpy': 
     return arcpy.GetParameterAsText 
    raise IOError("Invalid Input in 'style': {}".format(style)) 

問題を修正しました。

関連する問題