我在Python中遇到的一件事是将信息从一个函数传递到另一个函数,然后将其更改并传递回原始函数以便有用。看看这个非常基本的例子,试图创建一个可以被各种其他函数调用的ping函数。将变量从一个函数传递到另一个函数
import subprocess
pingchk = 0
def pinger(pcName, pingchk):
ping_out = subprocess.Popen(["ping", "-n", "1", pcName],stdout = subprocess.PIPE).communicate()[0]
if ('unreachable' in ping_out):
print "Warning", "PC not responding 1."
pingchk += 1
return pingchk
elif ('Request timed out.' in ping_out):
print "Warning", "PC not responding 2."
pingchk += 1
print pingchk
return pingchk
elif ('Ping request could not find host' in ping_out):
print "Warning", "PC not responding 3."
pingchk += 2
print pingchk
return pingchk
else:
print "Machine available!"
def someFunction():
pcName = raw_input("Please enter a pc name: ")
pinger(pcName, pingchk)
print pingchk
if pingchk == 1:
print "machine not switched on."
elif pingchk == 2:
print "machine name not recognized."
else:
print "success - machine on."
someFunction()
这是我在努力的pingchk
位。在这个例子中someFunction
正在通过machineName
到pinger
做这项工作,然后我想pinger
把结果传回someFunction
去使用。但是,someFunction
从不重新读取变量pingchk
,因此始终将其读取为0
。
我需要更改哪些内容才能将pinger
的结果回传给原始函数以供使用?
'pingchk = pinger(pcName,pinkchk)'? – jonrsharpe
@jonrsharpe - 谢谢你的回复,但如果我尝试它声称它在被赋值之前被引用... – user3514446
@jonrsharpe也许你错过了它,但是'pinger(pcName,'**'pinkchk)'**使用该值的全局变量,通过引入赋值,使其成为局部变量,它在分配之前是引用(作为pinger的参数)。 –