我正在尝试创建一个get_input()
函数,我可以在其中选择如何检索输入。
def get_input(input_msg = '', getparam = 0, style = 'raw'):
if style.lower() is 'arcpy':
return arcpy.GetParameterAsText(getparam)
if style.lower() is 'raw':
return raw_input(input_msg)
然而,当我使用该方法时,无论输入参数是什么,我得到的都是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?
答案 0 :(得分: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))
修复了问题。