Python 3-将函数的Return存储为变量,以便以后重复使用

时间:2018-08-03 19:03:45

标签: python tkinter registry

总体上来说,我仍然对Python和编程尚不陌生,但是作为一种学习更多Python的方法,并且只是修改了一些Windows Registry数据,我开始研究非常简单的tkinter和Python3数据提取器。

我一直无法从函数中获取输出,以某种方式存储为变量以供以后使用,有时会重复使用。只有几个按钮可以找到路径,保存文件路径,并且我想在另一个函数中使用该文件路径来从文件中获取数据。

def sw_click():
    sw_path1 = tkinter.filedialog.askopenfilename(initialdir='C:/Users/%s')
    swP_label.config(text=swpath1)
    return sw_path1

然后,我想将返回数据(sw_path1)用作另一个系统函数,该数据只是本地系统路径,稍后将被调用。例如:

def swpull_click():
    swinfo = *function_pullkey (sw_path1)   #Using another function 
    Return sw_data    # again as a variable for later use

所有功能都是分开工作的,但是要使一个功能返回另一个功能以供以后使用一直是一个障碍。我尝试使用另一个变量(例如

)来存储它
Var1  = sw_path1

但这会成为函数本身之外的未解决的引用

任何帮助将不胜感激。谢谢

****更新 在函数外部添加变量,例如:

    sw_path1 = None

    def software_click():
    global sw_path1
    tkinter.filedialog.askopenfilename(initialdir='')
    softwareP_label.config(text=sw_path1)
        return sw_path1

不存储变量,一旦获得变量,则始终为None。

3 个答案:

答案 0 :(得分:0)

您需要将变量sw_data设置为全局变量。 当前,它是一个功能级别变量。 为此,请在函数外部声明变量。
然后,您可以在任何其他函数中调用sw_path1

希望这会有所帮助!

答案 1 :(得分:0)

在模块级别定义变量。如果在sw_click函数中设置了该值,则该值仍可以在swpull_click函数中使用。

sw_path1 = None

def sw_click():
    # the global keyword stats that a module level variable can be set inside a function
    global sw_path1
    sw_path1 = tkinter.filedialog.askopenfilename(initialdir='C:/Users/%s')
    swP_label.config(text=swpath1)
    return sw_path1

def swpull_click():
    swinfo = *function_pullkey (sw_path1)   #Using another function 
    return sw_data    # again as a variable

答案 2 :(得分:0)

在函数执行之前将变量设置为None允许使用全局设置将其调用到函数中。通过在函数内使用全局变量,只要在函数内更新该变量,先前设置为“无”的全局变量将被更新。然后将其存储以供以后使用,除非另一个功能或过程将其清除或替换。

http://project.example.com/webservice/rest/server.php?wstoken=mytoken&wsfunction=core_user_update_users&users[0][id]=1392&customfields=(array(phone1=>123456789))

使用的三个打印功能(function1中的2个,function2中的1个)将按以下顺序返回:

import tkinter
from tkinter import filedialog

root = tkinter.Tk()

# Setting a variable to none, that can be used, updated, etc.
var1 = None

# So here a user would select their file, which would update var 1 from None, to the results
# This can be handy for validations using if statements to show the variable has not been updated
def function_1():
    global var1   # Must be set to global in the function to be able to access var1 and update
    print(var1)
    var1 = tkinter.filedialog.askopenfilename(initialdir='C:')
    print(var1)

# Updating the variable in the manner above allows for it to be updated repeatedly
# Now that updated variable can be used in function2

def function_2():
    print(var1)

button1 = tkinter.Button(root, text="get the path", command=function_1)
button2 = tkinter.Button(root, text="do something with it", command=function_2)

button1.pack()
button2.pack()
root.mainloop()

删除预设None C:/Windows/regedit.exe C:/Windows/regedit.exe 将导致脚本运行,但是在调用函数1时,将出现NameError Var1 = None

从function1中删除NameError: name 'var1' is not defined,并且var1仍设置为None之外,脚本仍将运行,但是使用function1时,它将在变量的第一行中抛出global var1错误。功能。