[oeasy]python0012_程序写错了怎么办

本文涉及的产品
应用实时监控服务-用户体验监控,每月100OCU免费额度
应用实时监控服务-应用监控,每月50GB免费额度
可观测监控 Prometheus 版,每月50GB免费额度
简介: 这段内容主要讲述了如何处理Python文件运行时的`NameError`。首先,使用`vi`编辑器

运行python文件_报错处理_NameError  🥊 回忆上次内容

  • 回忆 上次内容
  • vi oeasy.py
  • 用 vi 编辑 oeasy.py


  • cat oeasy.py
  • 用 cat 查看 oeasy.py


  • python3 oeasy.py
  • 用 python3 运行 oeasy.py



添加图片注释,不超过 140 字(可选)

  • 空格之前的 是
  • 命令
  • 发出绿光
  • 可以执行


  • 空格之后的 是
  • 命令的参数
  • 命令执行的 目标对象


  • 如果 程序写
  • 该 如何修改 呢?🤔


重新编辑

  • 先输入vi oeasy.py
  • 重新编辑 oeasy.py文件


  • 如果上次写的 没了
  • 就 重新输入
  • 用i 进入插入模式


添加图片注释,不超过 140 字(可选)

  • oeasy.py修改成
  • 上图的样子


保存并退出

  • esc 退出插入模式
  • 左下角的---插入(粘贴)---消失


添加图片注释,不超过 140 字(可选)

  • :w
  • write保存
  • oeasy.py后面的 [+]消失


退回到shell

  • 提示
  • 1行、15个字符
  • 已写入


添加图片注释,不超过 140 字(可选)

  • :q
  • quit 退出 (vim应用)
  • 回到 shell环境


添加图片注释,不超过 140 字(可选)

  • 准备运行程序

运行结果

  • 输入 python3 oeasy.py
  • 运行程序


添加图片注释,不超过 140 字(可选)

  • 不出所料
  • 报错了!🤗


出现Error

  • 这Error
  • 确实 让我们感觉到 痛苦


<span style="font-size:300px">😭</span>

  • 痛苦
  • 让我们 感觉到
  • 自己 是存在的


bug

  • 出错(bug)是
  • 最正常的


添加图片注释,不超过 140 字(可选)

  • Error
  • 不是 我们无能的标志
  • 而是 我们努力的标志
  • 更是 进步的阶梯


添加图片注释,不超过 140 字(可选)

  • 这个报错信息
  • 和IDLE(游乐场)一样 吗?


结果对比

  • 先去IDLE(游乐场)
  • 跑一下
  • pront("oeasy")


添加图片注释,不超过 140 字(可选)

  • 程序运行 和 游乐场运行
  • 几乎 一样
  • 都是 NameError
  • 都不认识 pront 这个 name



  • 说明
  • python解释器python游乐场 是相通的
  • 本来 就是 一个程序嘛


  • 不过 还是 有一点区别的
  • 你能发现吗?


小区别

  • 区别 如下图 红框 所示
  • 虽然 都在 报错信息 第2行
  • 但是 文件来源 不同


添加图片注释,不超过 140 字(可选)

  • 上面的 报错
  • 来自 oeasy.py
  • 是 硬盘上 写好的文件


  • 下面 的 报错
  • 来自 stdin
  • standard in
  • 标准输入流
  • 来自于 键盘的 直接输入


  • 具体怎么改呢?

新开终端

  • 从游乐场
  • 退回到 shell环境
  • 修改文件


  • 再用 vi 打开 oeasy.py
  • 进行修改后
  • 出现[+]
  • 但先不保存文件


添加图片注释,不超过 140 字(可选)

  • 此时如果 再开一个终端
  • 会冲突吗?


新开终端

  • 在桌面 再双击
  • 终端图标


  • 又新打开
  • 一个终端


添加图片注释,不超过 140 字(可选)

  • 键入
  • vi oeasy.py
  • 回车


打开了同一个文件

  • vim 应用程序
  • 报了一个错误
  • <span style="background:red;color:white;">E325: 注意</span>
  • 说明vim 发现了问题


添加图片注释,不超过 140 字(可选)

  • 因为 之前的终端
  • 已经打开了 oeasy.py
  • 并且 进行了修改
  • 但是还没保存到 硬盘中
  • 只存了 缓存文件
  • .oeasy.py.swp



  • 后开的终端
  • 想要 同时打开 oeasy.py
  • 发现了 缓存文件.oeasy.py.swp
  • 知道 oeasy.py 正在被别的终端 编辑着


  • 可以看看 这个 缓存文件 吗?

再开新终端

  • 再 新开 一个终端
  • 第三个 终端
  • 运行 下面的命令


ls -lah .oeasy.py.swp ls -lah oeasy.py

  • 确实可以看到
  • 隐藏的缓存文件
  • .oeasy.py.swp
  • 该文件 有12K


添加图片注释,不超过 140 字(可选)

  • 那第二个终端窗口
  • 还能打开这个文件吗?


打开方式

  • 回到第二个终端里 有几种选择
  • 只读o</kdb>
  • 直接编辑e  (自动缓存之前的原始文件)
  • 恢复r(恢复到自动缓存)
  • 退出q</kdb>
  • 终止a</kdb>


添加图片注释,不超过 140 字(可选)

保存并运行

  • 在 第2个 终端 里
  • 选择 r
  • 直接recovery  缓存


添加图片注释,不超过 140 字(可选)

  • 关闭
  • 第一个终端
  • 第二个 终端


保存并关闭

  • 在 第三个终端
  • 修改文件


添加图片注释,不超过 140 字(可选)

  • 保存并退出
  • 现在文件 都关闭了
  • 也应该 没有 自动缓存 了


再查看

  • 在第三个窗口
  • 查看缓存文件


ls -l .oeasy.py.swp

  • 由于 内容
  • 已经 存到了硬盘
  • 缓存文件 应该消失了


添加图片注释,不超过 140 字(可选)

  • 如果还没有消失
  • 就强制删除这个缓存


rm .oeasy.swp ls -l .oeasy.py.swp

  • 缓存已确认消失

添加图片注释,不超过 140 字(可选)

  • 如果 再用vim打开文件
  • 还会出现 <span style="background:red;color:white;">E325</span> 吗?


尝试运行oeasy.py

  • 直接打开

添加图片注释,不超过 140 字(可选)

  • 尝试运行oeasy.py

添加图片注释,不超过 140 字(可选)

  • 成功 运行了程序!

总结

  • 这次尝试了
  • 两个vim 同时打开
  • 同一py文件
  • vim出现了Error
  • 有各种选择



  • 错误拼写 pront 导致
  • 运行时 出现了NameError


添加图片注释,不超过 140 字(可选)

  • 错误(Error)
  • 不是 我们 无能的标记
  • 而是 我们 努力的见证
  • 更是 我们 进步的阶梯


  • 如果 程序里的 print
  • 字母没错
  • 大小写不同
  • 被误写成了 Print
  • 还会报错吗?🤔



相关文章
|
16天前
|
人工智能 Shell 开发工具
[oeasy]python062_在python中完成输入和输出_input_print
本文介绍了在Python中使用`input()`和`print()`函数完成输入和输出操作的基础知识。通过编写简单的程序,如问候用户和统计苹果数量,演示了如何添加提示信息、处理用户输入并输出结果。同时,回顾了上一次课程内容,包括`input`函数的参数和提示词的使用。文中还展示了如何在vim编辑器中编写和运行Python代码,并对vim和shell的基本操作进行了总结。最后提供了相关学习资源链接,方便读者进一步学习。
108 66
|
2月前
|
Unix Linux 程序员
[oeasy]python053_学编程为什么从hello_world_开始
视频介绍了“Hello World”程序的由来及其在编程中的重要性。从贝尔实验室诞生的Unix系统和C语言说起,讲述了“Hello World”作为经典示例的起源和流传过程。文章还探讨了C语言对其他编程语言的影响,以及它在系统编程中的地位。最后总结了“Hello World”、print、小括号和双引号等编程概念的来源。
124 80
|
2月前
|
人工智能 C语言 Python
[oeasy]python051_什么样的变量名能用_标识符_identifier
本文介绍了Python中变量名的命名规则,强调标识符(identifier)必须以字母或下划线开始,后续可包含字母、下划线及数字。通过`isidentifier()`函数可验证字符串是否为合法标识符。文中还探讨了为何数字不能作为标识符的开头,并提供了相关练习与解答,最后提及这些规则源自C语言的影响。
122 69
|
2月前
|
Python
[oeasy]python050_如何删除变量_del_delete_variable
本文介绍了Python中如何删除变量,通过`del`关键字实现。首先回顾了变量的声明与赋值,说明变量在声明前是不存在的,通过声明赋予其生命和初始值。使用`locals()`函数可查看当前作用域内的所有本地变量。进一步探讨了变量的生命周期,包括自然死亡(程序结束时自动释放)和手动删除(使用`del`关键字)。最后指出,删除后的变量将无法在当前作用域中被访问,并提供了相关示例代码及图像辅助理解。
124 68
|
1月前
|
存储 NoSQL 数据库连接
在Python程序中实现LevelDB的海量key的分批次扫描
通过本文的步骤,您可以在Python程序中实现对LevelDB海量key的分批次扫描。这样不仅能够有效地管理大规模数据,还可以避免一次性加载过多数据到内存中,提高程序的性能和稳定性。希望这篇指南能为您的开发工作提供实用的帮助。
64 28
|
25天前
|
人工智能 Unix Java
[oeasy]python059变量命名有什么规则_惯用法_蛇形命名法_name_convention_snake
本文探讨了Python中变量命名的几种常见方式,包括汉语拼音变量名、蛇形命名法(snake_case)和驼峰命名法(CamelCase)。回顾上次内容,我们主要讨论了使用下划线替代空格以提高代码可读性。实际编程中,当变量名由多个单词组成时,合理的命名惯例变得尤为重要。
60 9
|
30天前
|
C语言 Python
[oeasy]python058_一句话让python崩了
本文介绍了如何通过重新赋值`__builtins__`使Python环境崩溃,并探讨了下划线的来历及其在编程中的作用。文章回顾了上次内容,展示了覆盖内建模块导致系统崩溃的过程,解释了恢复方法,以及PEP 8规范中关于空格使用的建议。最后,文章总结了下划线在变量定义和提高代码可读性方面的重要性,并简述了其从打字机时代到计算机时代的演变。
32 10
|
2月前
|
Python
[oeasy]python055_python编程_容易出现的问题_函数名的重新赋值_print_int
本文介绍了Python编程中容易出现的问题,特别是函数名、类名和模块名的重新赋值。通过具体示例展示了将内建函数(如`print`、`int`、`max`)或模块名(如`os`)重新赋值为其他类型后,会导致原有功能失效。例如,将`print`赋值为整数后,无法再用其输出内容;将`int`赋值为整数后,无法再进行类型转换。重新赋值后,这些名称失去了原有的功能,可能导致程序错误。总结指出,已有的函数名、类名和模块名不适合覆盖赋新值,否则会失去原有功能。如果需要使用类似的变量名,建议采用其他命名方式以避免冲突。
46 14
|
1月前
|
Python
[oeasy]python057_如何删除print函数_dunder_builtins_系统内建模块
本文介绍了如何删除Python中的`print`函数,并探讨了系统内建模块`__builtins__`的作用。主要内容包括: 1. **回忆上次内容**:上次提到使用下划线避免命名冲突。 2. **双下划线变量**:解释了双下划线(如`__name__`、`__doc__`、`__builtins__`)是系统定义的标识符,具有特殊含义。
29 3
|
1月前
|
存储 Python
[oeasy]python056_python中下划线是什么意思_underscore_理解_声明与赋值_改名字
在Python中,下划线有多种用途。单下划线(_)常用于避免命名冲突,如将`max`改为`max_`以保留内置函数功能。双下划线(__var__)通常用于特殊方法和属性,如`__name__`、`__doc__`等。此外,单下划线(_)在交互式解释器中表示上一次表达式的值,但不建议作为普通变量名使用。总结:下划线用于避免命名冲突及特殊标识。
24 1