繁体   English   中英

如何在另一个函数中使用 main 中的变量?

[英]How to use a variable from main in another function?

在下面的代码中,如何在“结束”函数中使变量“猜测”对我可用。 每当我尝试这个时,我都会收到一个未定义的猜测。 在播放功能中,我返回一个数字,如果我理解正确,那么该数字应该等于“猜测”,出于某种原因,我不明白“猜测”在“结束”中不起作用。

def main():
    guesses = play()
    play_again = again()
    while (play_again == True):
        guesses = play()
        play_again = again()
        total_games = 1
        total_games += 1
    end()


def end():
    print("Results: ")
    print("Total: " + print(str(guesses + 1)))

将其作为参数传递

def main():
    guesses = play()
    play_again = again()
    while (play_again == True):
        guesses = play()
        play_again = again()
        total_games = 1
        total_games += 1
    end(guesses)

def end(guesses):
    print("Results: ")
    print("Total: " + str(guesses + 1))

将输入作为参数传递,并使用return将变量作为输出传出允许您控制程序中的数据流,而不是将global变量用作拐杖。

像这样的东西:

def main():
    guesses = play()
    play_again = again()
    while (play_again == True):
        guesses = play()
        play_again = again()
        total_games = 1
        total_games += 1
    end(guesses)

def end(guesses):
    print("Results: ")
    print("Total: {}".format(guesses + 1))

main()end()是两个具有不同作用域的独立函数。 您在函数main()定义了变量guesses 它对end()不可用,因为定义end()的范围无法访问guesses 尽管在main()调用了end() main() 函数内部不知道在创建/定义end()时存在guesses

在您尝试执行的过程中需要在两个函数之间传递信息,这凸显了对有关数据流的非常通用的编程范式的需求。 您可以通过使用“参数”或“参数”将信息传递给函数。 这些是在调用函数时定义或设置的变量。

在python中,它们看起来像这样:

def function(argument):
    #do something with argument
    print (argument)

只需将guesses作为参数传递给end()

def main():
    guesses = play()
    play_again = again()
    while (play_again == True):
        guesses = play()
        play_again = again()
        total_games = 1
        total_games += 1
    end(guesses)

def end(guesses):
    print("Results: ")
print("Total: " + str(guesses + 1))

或者另一种选择(尽管我不推荐它,除非你知道你在做什么),是在 main.js 中进行全局猜测。

guesses = None

def main():
    global guesses
    guesses = play()
    play_again = again()
    while (play_again == True):
        guesses = play()
        play_again = again()
        total_games = 1
        total_games += 1
    end()

def end():
    print("Results: ")
print("Total: " + str(guesses + 1))

请注意,我修复了您的打印报表。 您不需要使用 print 两次来打印您传递给print()参数的数据。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM