访问函数外的函数变量?

2024-09-29 02:18:10 发布

您现在位置:Python中文网/ 问答频道 /正文

所以我是初学者,这是我要上的课。我知道return,但它不允许我做我在这段代码中要做的事情

这是包含变量的函数:

def disp_cookies():
    # This stuff is just for a print display
    inx = 0 # Displays list vertically 
    while inx < len(flavor_names):
        print("{}. {}".format(inx + 1, flavor_names[inx]))
        inx += 1

    valid_data = False
    while not valid_data:
        try:
            # This is the variable I need
            flavor = int(input("\nSelect a number for flavor> "))

            if 0 < flavor <= len(flavor_names):
                item_list.append(flavor)
                print(flavor_names[int(flavor) - 1])
                return flavor    # This is the return
                break

        except Exception:
            print("\nError. Please try again")
        else:
            print("\nPlease enter a valid response")

这里是我尝试使用变量的地方:

^{pr2}$

这是我得到的错误:

Traceback (most recent call last):
  File "C:\Users\wiche\Documents\School\Python CIS122\L8_orderCost.py", line 95, in <module>
    print("\n", flavor)
NameError: name 'flavor' is not defined

我可以通过在函数外部定义flavor来消除这个错误,但是当我使用变量时,变量中的数据是错误的。你知道我能做些什么吗?在

请记住,我是一个绝对的初学者,您所看到的基本上是我迄今为止对python的全部理解

谢谢你!在


Tags: 函数forlenreturnnamesis错误this
2条回答

函数返回时,函数内的变量将消失(“超出范围”)。在

要从函数中获取值,需要执行以下两项操作:

  1. 在函数中-return一个或多个值。

  2. 调用函数时-保存值。您可以通过设置一个等于函数结果的变量来实现这一点:flavour = display_cookies()

考虑这个例子:

def answer_to_life():
    answer = 42
    return answer

ans = answer_to_life()
print (ans)             # output: 42

注意,我在函数(answer)和外部(ans)内部使用了不同的变量名。你可以用同一个名字,但这会让你在早期的教育中感到困惑。在

这是一个范围问题。你必须有一个叫做风味的变量。一个在全局范围内,一个在功能范围内。在

如果要访问函数内部的全局变量,则需要在函数内部使用“global”关键字。在

另一种可能是将函数的返回值赋给全局变量flavor。在

请参考[http://python-textbok.readthedocs.io/en/1.0/Variables_and_Scope.html#more-about-scope-crossing-boundaries]以获得完整的示例说明。在

相关问题 更多 >