每次我尝试返回此变量时,它都将返回None

时间:2019-10-02 15:21:48

标签: python

我正在尝试使用此函数来获取创建dict对象的用户输入,该对象可用于生成.json文件,并且该函数可以正常工作,直到您键入完成为止,它确实意识到您键入了done和 它确实会显示您正在创建的变量,但要在返回时始终输出“ None”。我正在使用最新版本的python。我和我的老师不知道为什么它不起作用。

def menu_asset_create_lang(lang):

    # The functions "header, space, and br"
    # are all just for making the text look nice in
    # the command line all they do is print stuff for
    # formatting and clear just does os.system('cls')


    clear()
    header()

    print('Lang Creation: ')
    space()
    print(lang)
    br()
    print('< Done')
    inp1 = labeled_input('Input Lang Code')

    if(inp1 == 'done') or (inp1 == '<'):
        return lang

    inp2 = labeled_input('Input Translation')

    lang.append(inp1 + '\":\"' + inp2)


    menu_asset_create_lang(lang)

# instantiate the variable
lang = []

# feed it into the function and make it
# spit out the generated variable in console
print(menu_asset_create_lang(lang))

我也尝试过这样做:

lang = []
langout = menu_asset_create_lang(lang)
print(langout)

还请您了解我对python还是很陌生。

2 个答案:

答案 0 :(得分:0)

递归调用menu_asset_create_lang(lang)只是挂在这里:在Python执行之后,并且此调用返回任何内容之后,函数主体结束,因此将返回None隐式地。

当前,您的代码与:

def menu_asset_create_lang(lang):
    ...
    menu_asset_create_lang(lang)
    return None

您能看到应该返回的内容而不是None吗?

答案 1 :(得分:0)

def menu_asset_create_lang(lang):

    # The functions "header, space, and br"
    # are all just for making the text look nice in
    # the command line all they do is print stuff for
    # formatting and clear just does os.system('cls')


    clear()
    header()

    print('Lang Creation: ')
    space()
    print(lang)
    br()
    print('< Done')
    inp1 = labeled_input('Input Lang Code')

    if(inp1 == 'done') or (inp1 == '<'):
        return lang

    inp2 = labeled_input('Input Translation')

    lang.append(inp1 + '\":\"' + inp2)


    return menu_asset_create_lang(lang)

我希望您能获得递归收益 Python默认返回None