Python 访问函数外部的函数变量?

Python 访问函数外部的函数变量?,python,python-3.x,Python,Python 3.x,我是初学者,这是我要上的一门课。我知道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_name

我是初学者,这是我要上的一门课。我知道
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")
print("\n", flavor) # This is outside of the function in the previous snippet btw
print("\n{}s, {} box(es), ${} total".format(flavor_names[flavor - 1], qty_list[order_no], item_total))
这是我得到的错误:

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
回溯(最近一次呼叫最后一次):
文件“C:\Users\wiche\Documents\School\Python CIS122\L8\u orderCost.py”,第95行,在
打印(“\n”,味道)
NameError:未定义名称“flavor”
我可以通过在函数外部定义
flavor
来消除错误,但是当我使用变量时,变量中的数据是错误的。知道我能做些什么来修复它吗

请记住,我是一个绝对的初学者,到目前为止,你所看到的基本上就是我对python的全部理解


谢谢大家!

当函数返回时,函数中的变量消失(“超出范围”)

要从函数中获取值,需要做两件事:

  • 在函数中-
    返回一个或多个值

  • 调用函数时-保存一个或多个值。通过将变量设置为函数的结果:
    flavor=display\u cookies()

  • 考虑这个例子:

    def answer_to_life():
        answer = 42
        return answer
    
    ans = answer_to_life()
    print (ans)             # output: 42
    

    请注意,我在函数内部(
    answer
    )和外部(
    ans
    )使用了不同的变量名。您可以使用相同的名称,但这可能会使您在早期教育中感到困惑。

    这是一个范围问题。您必须创建名为flavor的变量。一个在全局范围内,一个在功能范围内

    如果要访问函数中的全局变量,则需要函数中的“global”关键字

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


    请参阅[以获得示例的完整解释。

    谢谢您的回答!!不过现在我有一个新问题。我有如下更新的代码:
    flavor=disp\u cookies()
    print(“\n”,flavor)
    print(“\n{}s,{}框,${}总计”。格式(flavor\u名称[flavor],数量清单[order\u no],项目总数))
    但现在我发现了这个错误:Indexer错误:列表索引超出范围我是否调用了变量错误?@tonberryking,请单独提问。很难解决注释中的问题-我无法复制粘贴注释中的代码并运行它!将程序缩减为a将帮助您获得快速响应。