Python 函数elifs中的多个全局语句

Python 函数elifs中的多个全局语句,python,python-3.x,global-variables,Python,Python 3.x,Global Variables,程序首先询问用户是否要加载自己的文件或使用脚本提供的文件 filename=0 def first(filename): print('Please Select:') print('Run Program Now? Press "1"') start = int(input('Load Your Own List and Run Program? Press "2": ')) if start ==1: global filename

程序首先询问用户是否要加载自己的文件或使用脚本提供的文件

filename=0
def first(filename):
    print('Please Select:')
    print('Run Program Now? Press "1"')
    start = int(input('Load Your Own List and Run Program? Press "2": '))

    if start ==1:
        global filename
        filename = 'file.txt'
    elif start ==2:
        import tkinter as tk
        from tkinter import filedialog

        root = tk.Tk()
        root.withdraw()
        global filename
        filename = tkinter.filedialog.askopenfilename()
    else:
        print("You didn't enter a valid selection!")
        first(filename)
    main()
我正在使用另一个函数,它应该根据用户输入调用正确的文件

def guess(real):
    WORDLIST = filename
    with open(WORDLIST, 'r') as in_file:
错误:

ErrorSyntaxError: name 'filename' is assigned to before global declaration
这一切都在我使用用户输入和elif语句时起到了作用

def guess(real):

虽然我想单独调用它,这就是为什么我在它自己的函数中有用户输入。

您不需要对全局变量使用
return
,但是如果可能的话,我会避免使用全局变量。有关详细信息,请阅读“”

您提供的代码的简化版本如下所示,使用
return
然后将结果传递给另一个函数以避免使用全局变量:

def first():
    while True:
        print('Please Select:')
        print('Run Program Now? Press "1"')
        start = int(input('Load Your Own List and Run Program? Press "2": '))

        if start == 1:
            filename = 'file.txt'
            return filename
        elif start == 2:
            filename = 'hello.txt'
            return filename
        else:
            print("You didn't enter a valid selection!")

def second(filename):
    print (filename)

filename = first()
second(filename)

你为什么需要通配符?对不起,我漏了一行代码。(filename=0)我假设我需要一个全局值来更新主值?这就是我在研究中发现的。不,你应该将它传递到需要它的函数中。然后使用
return
在函数之外使用它。@DavidG我尝试过使用“return”,但也不起作用。但我是否仍需要使用全球投资回报?它不应该还它吗?