Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在不使用全局变量的情况下将变量传递到下一个函数_Python - Fatal编程技术网

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

Python 如何在不使用全局变量的情况下将变量传递到下一个函数,python,Python,我目前正在研究如何将保存的变量放入下一个函数中。为了说明我的意思,我在网上得到了最新的版本号: try: webversion = urllib2.urlopen( "http://www." + server + "/version").read().rstrip() if webversion > version: update_files() elif version >= webversion:

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

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\u 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 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\u first\u函数调用,则
my\u var
将具有与
var\u 1
相同的值,如下所示:

my_first_function(6,2)
请注意,如果脚本是单独运行的,而不是导入到其他地方,则必须在
my_first_函数
之前定义
my_second_函数
。或者,您可以使用以下方式运行程序:

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)

您还可以
返回web\u ver,ver
,或
返回另一个函数(web\u ver,ver)

以下是如何将变量从一个函数传递到另一个函数,前提是它们都在同一个文件中:

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\u first\u函数调用,则
my\u var
将具有与
var\u 1
相同的值,如下所示:

my_first_function(6,2)
请注意,如果脚本是单独运行的,而不是导入到其他地方,则必须在
my_first_函数
之前定义
my_second_函数
。或者,您可以使用以下方式运行程序:

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)

您还可以
返回web\u ver,ver
,或
返回另一个函数(web\u ver,ver)

为什么不简单地将函数更改为接受版本号作为参数?为什么不简单地将函数更改为接受版本号作为参数?您也可以删除
global webversion
,我们不需要使用global。谢谢@Vincent,这似乎是合乎逻辑的。当我更改代码时,它会给我一个错误:TypeError:update_files()正好接受2个参数(0)。我没有这方面的经验,所以我如何才能给update_files函数这两个参数呢?它是
update_files(webversion,version)
(你给两个参数)而不是
update_files()
(你给0个参数)。你也可以删除
全局webversion
,我们不需要使用全局。谢谢@Vincent,这似乎是合乎逻辑的。当我更改代码时,它会给我一个错误:TypeError:update_files()正好接受2个参数(0)。我没有这方面的经验,所以我如何才能给update\u files函数这两个参数呢?它是
update\u files(webversion,version)
(您提供两个参数),而不是
update\u files()
(您提供0个参数)