如何返回raw_input以使用其他名称?

时间:2017-08-18 18:15:13

标签: python arcpy

我正在尝试创建一个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?

1 个答案:

答案 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))

修复了问题。