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个参数)