如何在不使用全局的情况下将变量传递到下一个函数中



我目前正在研究如何将我保存的变量放入下一个函数中。为了说明我的意思,我在线获取最新版本号如下:

try:
     webversion = urllib2.urlopen(
         "http://www." + server + "/version").read().rstrip()
     if webversion > version:
          update_files()
     elif version >= webversion:
          print "[SYSTEM] You have the latest version: v." + version

update_files()函数中,我非常想将我获得的变量(webversion可能还有version(带到下一个函数中。

我正在考虑将此变量设置为全局变量:

try:
     global webversion
     webversion = urllib2.urlopen(
         "http://www." + server + "/version").read().rstrip()
     if webversion > version:
          update_files()
     elif version >= webversion:
          print "[SYSTEM] You have the latest version: v." + version

有没有更好的方法/更聪明的方法?

只是将参数传递给函数:

函数定义:

def update_files(webversion, version):
    # ... function execution

和代码:

try:
     # global webversion we don't need it
     webversion = urllib2.urlopen("http://www." + server + "/version").read().rstrip()
     if webversion > version:
          update_files(webversion, version)
     elif version >= webversion:
          print "[SYSTEM] You have the latest version: v." + version
#And be careful to add except, with try!
except:
    print("Error!")
以下是将

变量从一个函数传递到另一个函数的方式,前提是它们都在同一个文件中:

def my_second_function(my_var):
    print(my_var)

def my_first_function(var_1, var_2):
    my_second_function(var_1):
    # do whatever you want here.
    return True

如果从my_first_function调用,my_var将具有与var_1相同的值,如下所示:

my_first_function(6,2)

请注意,如果脚本是单独运行的,并且未导入到其他位置,则必须在my_first_function之前定义my_second_function。或者,您可以使用以下方法运行程序:

if __name__ == '__main__': 
    my_second_function(6, 2)

您的案例:

在您的情况下,我们可以将其定义为:

def update_files(web_ver, ver):
    # You can do whatever you want with these, including sending them elsewhere.
    return True  # or whatever

try:
     webversion = urllib2.urlopen("http://www." + server + "/version").read().rstrip()
     if webversion > version:
         update_files(webversion, version)
     else:
         print("[SYSTEM] You have the latest version: v." + version)
 except:
     print("Error!")
 update_files(webversion, version)

您也可以return web_ver, verreturn another_func(web_ver, ver)

最新更新