我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Python错误NameError:name 'X' is not defined的解决方法

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Python错误NameError:name 'X' is not defined的解决方法

Python“NameError: name is not defined”发生在我们试图访问一个未定义的变量或函数时,或者在它被定义之前。

要解决该错误,需要确保我们没有拼错变量名并在声明后访问它。

确保你没有拼错变量或函数

下面是产生上述错误的示例代码。

employee = {
    'name': 'Jiyik',
    'age': 30,
}

# ⛔️ NameError: name 'Employee' is not defined. Did you mean: 'employee'?
print(Employee) # ?️ 拼写错误的变量名

Python 错误 NameError name X is not defined

问题是我们拼错了变量名。 请注意,变量、函数和类的名称区分大小写。

要解决这种情况下的错误,我们必须正确拼写变量名。

employee = {
    'name': 'Jiyik',
    'age': 30,
}

print(employee)

‘X’ is not defined 错误的常见原因

出现 Python“NameError: name is not defined”的原因有多种:

  • 访问不存在的变量。
  • 在声明之前访问变量、函数或类。
  • 变量、函数或类的名称拼写错误(名称区分大小写)。
  • 不要将字符串用引号引起来,例如 print(hello)。
  • 不将字典的键用引号引起来。
  • 使用内置模块而不先导入它们。
  • 从外部访问作用域变量。 例如,在函数中声明一个变量并试图从外部访问它。
  • 访问不存在的变量或函数#
  • 确保我们没有访问不存在或尚未定义的变量。

访问不存在的变量或函数

确保我们没有访问不存在或尚未定义的变量。

# ⛔️ NameError: name 'do_math' is not defined
print(do_math(15, 15))


def do_math(a, b):
    return a + b

代码示例导致“NameError: function is not defined”错误,因为我们试图在函数声明之前调用它。

要解决该错误,请在声明变量后移动调用函数或访问变量的行。

# ✅ 1) 声明函数或变量
def do_math(a, b):
    return a + b

# ✅ 2) 之后访问它
print(do_math(15, 15))  # ?️ 30

请注意,我们还必须在类声明后实例化类或调用类方法。

使用变量时也是如此。

# ⛔️ NameError: name 'variable' is not defined.
print(variable)

variable = 'jiyik.com'

确保将访问变量的行移到声明它的行下方。

variable = 'jiyik.com'

print(variable)  # ?️ jiyik.com

忘记用单引号或双引号将字符串括起来

错误的另一个原因是忘记将字符串用单引号或双引号引起来。

def greet(name):
    return 'Hello ' + name

# ⛔️ NameError: name 'Fql' is not defined. Did you mean: 'slice'?
greet(Fql) # ?️ 忘记用引号括起字符串

greet 函数期望用字符串调用,但我们忘记将字符串用引号引起来,因此发生了名称“X”未定义的错误。

当将字符串传递给 print() 函数而不用引号将字符串引起来时,也会发生这种情况。

要解决该错误,请将字符串括在引号中。

def greet(name):
    return 'Hello ' + name

greet('Fql')

使用内置模块而不导入它

如果我们使用内置模块而不导入它,也会导致“NameError: name is not defined”。

# ⛔️ NameError: name 'math' is not defined
print(math.floor(15.5))

我们使用 math 模块而不先导入它,所以 Python 不知道 math 指的是什么。

“NameError: name ‘math’ is not defined”意味着我们正在尝试访问 math 模块上的函数或属性,但在访问该属性之前我们还没有导入模块。

要解决该错误,请确保导入我们正在使用的所有模块。

import math
print(math.floor(15.5))  # ?️ 15

import math 行是必需的,因为它将 math 模块加载到我们的代码中。

模块只是函数和类的集合。

我们必须先加载模块,然后才能访问其成员。

忘记用引号将字典的键括起来

如果我们有一本字典而忘记将其键用引号括起来,也会导致该错误。

employee = {
    'name': 'Jiyik',
    # ⛔️ NameError: name 'age' is not defined
    age: 30 # ?️ 字典键未包含在引号中
}

除非字典中有数字键,否则请确保将它们用单引号或双引号引起来。

employee = {
    'name': 'Jiyik',
    'age': 30
}

尝试从外部访问作用域变量

如果我们尝试从外部访问范围变量,也会发生该错误。

def get_message():
    message = 'jiyik.com' # ?️ 函数中声明的变量
    return message

get_message()

# ⛔️ NameError: name 'message' is not defined
print(message)

message 变量是在 get_message 函数中声明的,因此无法从外部范围访问它。

如果必须从外部访问变量,最好的解决方法是在外部作用域中声明该变量。

# ?️ 在外部范围内声明变量
message = 'hello world'

def get_message():
    return message

get_message()

print(message)  # ?️ "hello world"

在这种情况下,另一种方法是从函数返回值并将其存储在变量中。

def get_message():
    message = 'jiyik.com'
    return message

result = get_message()

print(result)  # ?️ "hello world"

另一种选择是将变量标记为全局变量。

def get_message():
    # ?️ 将 message 标记为全局
    global message

    # ?️ change its value
    message = 'hello world'

    return message

get_message()

print(message)  # ?️ "hello world"

请注意 ,通常应避免使用 global 关键字,因为它会使我们的代码更难阅读和推理。

试图访问在嵌套函数中声明的变量

如果我们尝试从外部函数访问在嵌套函数中声明的变量,我们可以将该变量标记为非局部变量。

def outer():
    def inner():
        message = 'jiyik.com'
        print(message)

    inner()

    # ⛔️ NameError: name 'message' is not defined
    print(message)

outer()

内部函数声明了一个名为 message 的变量,但我们尝试从外部函数访问该变量并得到“name message is not defined”错误。

为了解决这个问题,我们可以将消息变量标记为非局部变量。

def outer():
    # ?️ 初始化 message 变量
    message = ''

    def inner():
        # ?️ 将 message 标记为 nonlocal
        nonlocal message
        message = 'jiyik.com'
        print(message)

    inner()

    print(message)  # ?️ "jiyik.com"

outer()

nonlocal 关键字允许我们使用封闭函数的局部变量。

请注意 ,我们必须在外部函数中初始化消息变量,但我们能够在内部函数中更改它的值。

如果我们不使用 nonlocal 语句,对 print() 函数的调用将返回一个空字符串。

def outer():
    # ?️ 初始化 message 变量
    message = ''

    def inner():
        # ?️ 在内部范围内声明 message
        message = 'hello world'
        print(message)

    inner()

    print(message)  # ?️ ""

outer()

在类定义之前访问它

当我们在定义类之前访问类时,也会发生该错误。

# ⛔️ NameError: name 'Employee' is not defined
emp1 = Employee('jiyik', 100)

class Employee():
    def __init__(self, name, salary):
        self.name = name
        self.salary = salary

    def get_name(self):
        return self.name

要解决该错误,请将实例化行移至类声明下方。

class Employee():
    def __init__(self, name, salary):
        self.name = name
        self.salary = salary

    def get_name(self):
        return self.name

emp1 = Employee('jiyik', 100)
print(emp1.name)  # ?️ jiyik

如果我们正在使用来自第三方库的类,则必须先导入该类才能使用它。

请注意在 try/except 块中使用 import 语句

try/except 块中使用 import 语句时也可能发生该错误。

try:
    # ?️ 此处的代码可能会引发错误

    import math
    result = math.floor(15.5)

except ImportError:
    math.floor(18.5)

print(math.floor(20.5))

该代码示例有效,但是,如果 import 语句之前的某些代码引发错误,则该模块将不会被导入。

这是一个问题,因为我们正在 except 块中和 try/except 语句之外访问模块。

相反,将导入语句移至文件顶部。

# ✅ 将 import 语句移动到文件顶部
import math

try:
    result = math.floor(15.5)

except ImportError:
    math.floor(18.5)

print(math.floor(20.5))

总结

要解决 Python “NameError: name is not defined”,请确保:

  • 我们没有访问不存在的变量。
  • 我们不会在声明变量、函数或类之前访问它。
  • 我们没有拼错变量、函数或类的名称(名称区分大小写)。
  • 我们没有忘记用引号括起一个字符串,例如 print(hello)。
  • 我们没有忘记用引号将字典的键括起来。
  • 如果不先导入内置模块,就不会使用它们。
  • 我们不是从外部访问作用域变量。 例如,在函数中声明一个变量并试图从外部访问它。

到此这篇关于Python错误NameError:name ‘X‘ is not defined的解决方法的文章就介绍到这了,更多相关Python错误NameError:name ‘X‘ is not defined内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Python错误NameError:name 'X' is not defined的解决方法

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Python错误NameError:name 'X' is not defined的解决方法

这篇文章主要给大家介绍了关于Python错误NameError:name ‘X‘ is not defined的解决方法,这是最近工作中遇到的一个问题,文中通过实例代码将解决的方法介绍的非常详细,需要的朋友可以参考下
2023-05-14

如何彻底解决python NameError:name '__file__' is not defined

这篇文章主要给大家介绍了关于如何彻底解决python NameError:name '__file__' is not defined的相关资料,文中通过图文将解决的办法介绍的非常详细,需要的朋友可以参考下
2023-02-07

Python错误NameError:name 'X' is not defined如何解决

本篇内容介绍了“Python错误NameError:name X is not defined如何解决”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学
2023-07-05

Python中TypeError:unhashable type:'dict'错误的解决办法

这篇文章主要给大家介绍了关于Python中TypeError:unhashable type:'dict'错误的解决办法,文中通过实例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
2023-05-15

npm出现Cannot find module 'XXX\node_modules\npm\bin\npm-cli.js'错误的解决方法

最近在启动项目的时候会报这个错就是npm丢失,所以下面这篇文章主要给大家介绍了关于npm出现Cannot find module 'XXX\node_modules\npm\bin\npm-cli.js'错误的解决方法,需要的朋友可以参考下
2022-11-13

jQuery/$ is not defined报错的几种解决方法

jQuery/$未定义错误是常见的Web开发难题。解决该错误的方法包括:确保jQuery库已加载并正确引用,检查冲突,使用正确的jQuery版本,排除CDN问题,使用代码优化工具,重置浏览器缓存,联系网站开发人员。遵循这些步骤,您将解决此错误并确保jQuery正常运作。
jQuery/$ is not defined报错的几种解决方法
2024-04-02

Content type ‘application/x-www-form-urlencoded;charset=UTF-8‘ not supported错误的多种解决方法及说明Content-Type

文章目录 1.复现错误 2. 分析错误 3. 解决错误 3.1 方法1:修改后端接参方式 3.2 方法2:修改前端传参方式 4. 补充说明content-type 4.1 语法
2023-08-22

关于对连接数据库时出现1130-host “**” is not allowed to connect to this MySql/mariadb server 的错误解决方法

在完成mariadb的搭建后,在端口与防火墙均为正常的情况下,出现了1130- Host xxx is not allowed to connect to this MariaDb server 的情况。 笔者在网络上寻找了许久,最终发现了是因为授权的问题,使
2019-04-28

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录