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”,但也不起作用。但我是否仍需要使用全球投资回报?它不应该还它吗?