【问题标题】:Unable to retrieve variable assigned in function [duplicate]无法检索函数中分配的变量[重复]
【发布时间】:2022-12-25 08:31:52
【问题描述】:

我正在编写一个函数,它从用户那里获取输入并将变量 answer 设置为用户给出的答案。我在函数外打印answer,但由于某种原因,它没有打印任何东西。

answer = " "   # set empty in the start
def ask(question):
    answer = input(question) # sets the answer to the user's input
ask("how are you ")
print(answer)  # ends up printing nothing.

【问题讨论】:

  • 在函数内部声明的变量称为局部变量。分配给函数内部变量的值将仅保留在函数中。为了获得所需的输出,在函数 return answer 或 print(answer) 中添加 print 或 return 语句

标签: python function user-input


【解决方案1】:

你必须打印答案:

  1. ask 函数内部, 要么
  2. 返回答案,捕获并打印
    answer = " "   # set empty in the start
    def ask(question):
        answer = input(question)
        return answer
        
    answer = ask("how are you ")
    print(answer)
    

    或一行:

    print(ask("how are you "))
    

【讨论】:

    【解决方案2】:

    answerask() 中创建一个名为answer 的新变量;它确实不是参考上面声明的变量ask()

    解决这个问题最干净的方法是从ask()返回用户的输入,然后直接赋值给answer。 (您也可以使用 global 关键字,但这通常被认为是不好的做法。)

    def ask(question):
        return input(question)
    answer = ask("how are you ")
    print(answer)
    

    【讨论】:

    • 有什么方法可以让我在函数内部引用变量,而不必将“answer”变量设置为函数外部的询问函数?
    • 是的,您可以使用global 关键字。使用您的原始代码,但插入 global answer 作为 ask() 函数体的第一行。话虽如此,这会使您的代码很难阅读,因此请谨慎使用。
    猜你喜欢
    • 1970-01-01
    • 2021-12-29
    • 1970-01-01
    • 1970-01-01
    • 2021-08-27
    • 2020-11-21
    • 2021-08-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多