python - 为什么函数中的变量不能存储我以后可以使用的值?
问题描述
所以,这是我遇到困难的代码:
import optarse
import subprocess
def get_arguments():
parser = optparse.OptionParser()
parser.add_option("-i", dest="interface")
parser.add_option("-m", dest="new_mac")
(options, arguments) = parser.parse_args()
def change_mac(interface, new_mac):
subprocess.call(["ifconfig", interface, "hw", "ether", new_mac])
change.mac(options.interface, options.new_mac)
据我所知,变量选项和参数存储 parser.parse_args() 返回的任何值。现在,每当我在终端中调用这个程序时,它都会给我一个错误。这是说名称选项未定义。这怎么可能?
PS:我知道解决方案是使用return parser.parse_args()
,但我只是想了解为什么(options, arguments) = parser.parse_args()
不起作用。
提前致谢!
解决方案
该名称
options
未在您使用它的全局范围内定义,因为...你从不调用函数
get_arguments
,但是......即使您确实调用了它,该函数也会
get_arguments
定义三个名称和parser
,通过为它们分配值,然后通过不返回任何内容来隐式返回。当 Python 退出函数作用域时,这些名称及其值将被丢弃,不再被引用。如果您需要这些值,请将它们返回或将它们分配给全局变量,但这是不好的做法。options
arguments
None