NameError:名称“ config”未定义

时间:2018-10-07 15:38:19

标签: python function callback nameerror

这个错误似乎已经被提过了,但是我注意到响应是创建一个类并实例化一个对象。在这里,我只定义了一个读取Yaml文件并吐出值的函数。

    import yaml


    def read_yaml(file):
        with open(file, "r") as stream:
            try:
                config = yaml.load(stream)
                print(config)
            except yaml.YAMLError as exc:
                print(exc)
                print("\n")
        return config

    read_yaml(config.yaml)
    print(config)

这将返回错误:“ NameError:名称'config'未定义”。我可以从yaml文件中打印数据,但不能打印该函数返回的配置。

3 个答案:

答案 0 :(得分:0)

您正在read_yaml函数内部定义变量“ config”,但是随后您尝试在函数外部使用该变量(实际上,您试图将其作为参数传递给定义该函数的同一函数)。

要解决此问题,请将最后一行更改为类似

read_yaml(“ file.txt”)

其中file.txt是包含您Yaml的文件的名称。

答案 1 :(得分:0)

在第4行上,在函数定义的范围内定义变量config(通过为其赋值) ,该变量从第1行开始。然后在第11行,函数(注意缩进),您尝试在全局范围内访问名为config的变量(并引用其属性yaml)-但没有一个变量。

可能您不是要访问最后一行的变量。您是要传递字符串config.yaml作为文件名吗?然后它必须用引号引起来。

答案 2 :(得分:0)

您可能想写:

read_yaml("config.yaml")

请记住,字符串由两个引号分隔。