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

本文涉及的产品
云原生网关 MSE Higress,422元/月
容器镜像服务 ACR,镜像仓库100个 不限时长
应用实时监控服务-可观测链路OpenTelemetry版,每月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
  • 还会报错吗?🤔



相关文章
|
18天前
|
Unix Linux 程序员
[oeasy]python053_学编程为什么从hello_world_开始
视频介绍了“Hello World”程序的由来及其在编程中的重要性。从贝尔实验室诞生的Unix系统和C语言说起,讲述了“Hello World”作为经典示例的起源和流传过程。文章还探讨了C语言对其他编程语言的影响,以及它在系统编程中的地位。最后总结了“Hello World”、print、小括号和双引号等编程概念的来源。
102 80
|
25天前
|
人工智能 C语言 Python
[oeasy]python051_什么样的变量名能用_标识符_identifier
本文介绍了Python中变量名的命名规则,强调标识符(identifier)必须以字母或下划线开始,后续可包含字母、下划线及数字。通过`isidentifier()`函数可验证字符串是否为合法标识符。文中还探讨了为何数字不能作为标识符的开头,并提供了相关练习与解答,最后提及这些规则源自C语言的影响。
113 69
|
27天前
|
Python
[oeasy]python050_如何删除变量_del_delete_variable
本文介绍了Python中如何删除变量,通过`del`关键字实现。首先回顾了变量的声明与赋值,说明变量在声明前是不存在的,通过声明赋予其生命和初始值。使用`locals()`函数可查看当前作用域内的所有本地变量。进一步探讨了变量的生命周期,包括自然死亡(程序结束时自动释放)和手动删除(使用`del`关键字)。最后指出,删除后的变量将无法在当前作用域中被访问,并提供了相关示例代码及图像辅助理解。
111 68
|
7天前
|
Python
[oeasy]python055_python编程_容易出现的问题_函数名的重新赋值_print_int
本文介绍了Python编程中容易出现的问题,特别是函数名、类名和模块名的重新赋值。通过具体示例展示了将内建函数(如`print`、`int`、`max`)或模块名(如`os`)重新赋值为其他类型后,会导致原有功能失效。例如,将`print`赋值为整数后,无法再用其输出内容;将`int`赋值为整数后,无法再进行类型转换。重新赋值后,这些名称失去了原有的功能,可能导致程序错误。总结指出,已有的函数名、类名和模块名不适合覆盖赋新值,否则会失去原有功能。如果需要使用类似的变量名,建议采用其他命名方式以避免冲突。
29 14
|
2天前
|
存储 Python
[oeasy]python056_python中下划线是什么意思_underscore_理解_声明与赋值_改名字
在Python中,下划线有多种用途。单下划线(_)常用于避免命名冲突,如将`max`改为`max_`以保留内置函数功能。双下划线(__var__)通常用于特殊方法和属性,如`__name__`、`__doc__`等。此外,单下划线(_)在交互式解释器中表示上一次表达式的值,但不建议作为普通变量名使用。总结:下划线用于避免命名冲突及特殊标识。
9 1
|
16天前
|
C语言 Python
[oeasy]python054_python有哪些关键字_keyword_list_列表_reserved_words
本文介绍了Python的关键字列表及其使用规则。通过回顾`hello world`示例,解释了Python中的标识符命名规则,并探讨了关键字如`if`、`for`、`in`等不能作为变量名的原因。最后,通过`import keyword`和`print(keyword.kwlist)`展示了Python的所有关键字,并总结了关键字不能用作标识符的规则。
29 9
|
19天前
|
安全 API C语言
Python程序的安全逆向(关于我的OPENAI的APIkey是如何被盗的)
本文介绍了如何使用C语言编写一个简单的文件加解密程序,并讨论了如何为编译后的软件添加图标。此外,文章还探讨了Python的.pyc、.pyd等文件的原理,以及如何生成和使用.pyd文件来增强代码的安全性。通过视频和教程,作者详细讲解了生成.pyd文件的过程,并分享了逆向分析.pyd文件的方法。最后,文章提到可以通过定制Python解释器来进一步保护源代码。
63 6
|
24天前
|
Unix 编译器 C语言
[oeasy]python052_[系统开发语言为什么默认是c语言
本文介绍了C语言为何成为系统开发的首选语言,从其诞生背景、发展历史及特点进行阐述。C语言源于贝尔实验室,与Unix操作系统相互促进,因其简洁、高效、跨平台等特性,逐渐成为主流。文章还提及了C语言的学习资料及其对编程文化的影响。
26 5
|
29天前
|
Shell Python
[oeasy]python049_[词根溯源]locals_现在都定义了哪些变量
本文介绍了Python中`locals()`函数的使用方法及其在调试中的作用。通过回顾变量赋值、连等赋值、解包赋值等内容,文章详细解释了如何利用`locals()`函数查看当前作用域内的本地变量,并探讨了变量声明前后以及导入模块对本地变量的影响。最后,文章还涉及了一些与“local”相关的英语词汇,如`locate`、`allocate`等,帮助读者更好地理解“本地”概念在编程及日常生活中的应用。
35 9
|
1月前
|
IDE 程序员 开发工具
Python编程入门:打造你的第一个程序
迈出编程的第一步,就像在未知的海洋中航行。本文是你启航的指南针,带你了解Python这门语言的魅力所在,并手把手教你构建第一个属于自己的程序。从安装环境到编写代码,我们将一步步走过这段旅程。准备好了吗?让我们开始吧!