【问题标题】:how to grab unser inputed data from one function and use in another python如何从一个函数中获取用户输入的数据并在另一个 python 中使用
【发布时间】:2015-01-24 21:57:44
【问题描述】:

这可能是一个简单的答案,也许必须对全局变量做些什么?如何从一个函数中获取用户输入的数据,并使其能够与同一程序中的其他函数一起调用和输出。例如:

hydro = False
    def main():
        medium = input("soil or hydro")

    def second():
        if medium == "hydro":
            hydro = True


main()
second()

【问题讨论】:

    标签: python function variables global


    【解决方案1】:

    您可以使用全局变量来解决这个问题:see here。但是,在 Python 中使用classes 是一种更好的做法,并将共享变量的函数连同它们共享的变量一起保存在特定的类中。

    在您的代码中,它看起来像这样:

    class MediumHandler(object):
        def __init__(self):
            self.hydro = False
    
        def main(self):
            self.medium = input("soil or hydro")
    
        def second(self):
            if self.medium == "hydro":
                self.hydro = True
    
    handler = MediumHandler()
    handler.main()
    handler.second()
    

    注意self.mediumhydro 的每次使用中的使用。这会将变量附加到对象上,而不是将它们留在全局环境中。

    【讨论】:

    • 哦,是的,我现在稍微记得上课了。我在肯塔基大学学习已经大约 3 年了。因此,如果我有来自用户的 4 个数据输入(CFL 或 HID;HYDRO 或 SOIL;植物数量;平方英尺。)然后我必须为每个创建 4 个类吗?
    • 不,绝对不是:您可以将它们全部存储为类中的不同变量。也许称它为InputHandler 或只是Input 而不是MediumHandler
    • def __init__(self): 函数是干什么用的?
    【解决方案2】:

    如果您不想使用类,请确保使用全局变量:

    hydro = False
    medium = ''
    def main():
        global medium
        medium = raw_input("soil or hydro: ")
    
    
    def second():
        global medium
        global hydro
        if medium == "hydro":
            hydro = True
    
    main()
    print medium
    second()
    print hydro
    

    另外请注意,我使用了raw_input() 而不是input()input 不适用于您的情况,因为您希望字符串保持为字符串。

    【讨论】:

    • 我的错。我使用python 2.7。在 python 3 raw_input() 被重命名为 input()
    猜你喜欢
    • 2021-06-27
    • 1970-01-01
    • 2017-11-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-02
    • 2017-12-14
    • 1970-01-01
    相关资源
    最近更新 更多