首页 > 解决方案 > 为什么函数中的变量不能存储我以后可以使用的值?

问题描述

所以,这是我遇到困难的代码:

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()不起作用。

提前致谢!

标签: pythonfunctionvariables

解决方案


  1. 该名称options未在您使用它的全局范围内定义,因为...

  2. 你从不调用函数get_arguments,但是......

  3. 即使您确实调用了它,该函数也会get_arguments定义三个名称和parser,通过为它们分配值,然后通过不返回任何内容来隐式返回。当 Python 退出函数作用域时,这些名称及其值将被丢弃,不再被引用。如果您需要这些值,请将它们返回或将它们分配给全局变量,但这是不好的做法。optionsargumentsNone


推荐阅读