如何使函数从Python函数外部获取变量?

时间:2017-09-25 19:10:24

标签: python python-3.x function variables while-loop

所以我刚刚开始编写代码,这些代码会询问用户他们想要测试的主题以及他们想要的难度,然后,显然,给他们那个测试。我为if语句创建了一个函数来检查它是什么测试以及它应该有多难,我只是做了一个随机的,一次性的函数来测试代码。我将向您展示代码(显然非常早期-α并且无处接近完成)然后我将解释该问题。

def which_test(real_dif, real_test, give_test):
    if difficulty == real_dif and test == real_test:
        give_test

def easy_CS():
    print("HEY")

while True:
    test = str(input("What test do you want to take? Computer Science, History or Music? ").strip().lower())
    difficulty = str(input("Do you want to take the test in easy, medium or hard? ").strip().lower())
    which_test("easy", "computer science", easy_CS())

问题是,无论输入变量是什么,easy_CS()函数都会被激活。我可以输入" JFAWN"对于test变量和" JDWNA"对于difficulty变量,它仍会打印" HEY"。我如何制作它以便它实际上采用变量,或者我怎样才能使它按照它的意图运作?

1 个答案:

答案 0 :(得分:6)

这是因为你自己调用这个功能。请看这里的括号?他们称之为功能:

which_test("easy", "computer science", easy_CS())
                                       ^^^^^^^^^^

你打算做什么:

def which_test(real_dif, real_test, give_test):
    if difficulty == real_dif and test == real_test:
        give_test()  # call the function

# more code...
which_test("easy", "computer science", easy_CS))
             # pass the function itself ^^^^^^

所以,没有括号 - 没有函数调用。