[oeasy]python058_一句话让python崩了

简介: 本文介绍了如何通过重新赋值`__builtins__`使Python环境崩溃,并探讨了下划线的来历及其在编程中的作用。文章回顾了上次内容,展示了覆盖内建模块导致系统崩溃的过程,解释了恢复方法,以及PEP 8规范中关于空格使用的建议。最后,文章总结了下划线在变量定义和提高代码可读性方面的重要性,并简述了其从打字机时代到计算机时代的演变。

[趣味拓展]如何把python环境彻底搞崩溃_下划线是怎么来的

回忆上次内容

  • 上次玩的 还是  下划线
位置和数量 作用
一个放后面 避免名字冲突
两个放两边 系统变量

  • 能把内建模块(builtins)
  • 覆盖掉吗??🤔

重新赋值

__builtins__ = 1

  • 所有的 内建函数
  • 直接 不认识了😭
  • 这 搞崩系统 啦?!!! 😭
  • 所有函数 失效!!!! 😭

  • 赶紧喊救命

绝望

  • 喊救命
  • 也没人理了 😭😭😭

  • 退 都 退不出去了!!!🥹

  • 本地真的没有__builtins__了吗?

本地

locals()

  • 内建模块中函数
  • 全部失效

结果

  • 尝试引用外部模块 os

import os

  • python 已经彻底崩溃
  • 暴露出了c语言源程序
  • 代码的位置

  • 怎么办?

删除变量

  • __builtins__删除了
  • 原内建模块 就重见天日了

__builtins__ = 1

del __builtins__

  • 一切都恢复了

  • 在等号两端 总保留 一个空格
  • 看起来没什么意义啊
  • 为什么要 加空格呢?

可读性

  • 空格
  • 完成 留白
  • 非常优雅

  • 增加了 文档的可读性

  • 这两句话从何说起

加空格的原因

import this

  • 这两句话也来自于
  • python之禅
  • The Zen of Python

  • 有 明确文档 做过要求 吗?

具体规范

  • pep8

  • 赋值运算符(=)周围
  • 两边各有一个空格
  • 不要超过一个空格
  • pep8是什么意思呢?

pep8

  • PEP 8
  • 是 Python Enhancement Proposals 8
  • Python 代码风格指南
  • 从现在开始
  • 养成习惯
  • 打好基础
  • 提高代码质量
  • 认真、专业 的
  • 能 看得出来
  • 乱写的 代码
  • 让人一看 就想要离开
  • 拒人千里之外
  • 为什么会有下划线这么一个标点呢?

下划线来历

  • 打字机时代
  • 早期使用字模
  • 没有粗体
  • 没有斜体
  • 甚至没有 小写字母

  • 想要表现重点
  • 就用下划线

电子排版领域

The  underscore is not the same character as the dash character, although  one convention for text news wires is to use an underscore when an  em-dash or en-dash is desired, or when other non-standard characters  such as bullets would be appropriate. A series of underscores [like -___ ] may be used to create a blank to be filled in on a form, although the  resulting blank may have tiny gaps between each individual underscore.  It is also sometimes used to create a horizontal line; other symbols  with similar graphemes, such as hyphens and dashes, are also used for  this purpose.
  • 制作电子文稿的时候
  • 可以作为 填空的位置

计算机时代

  • 计算机时代 有的时候
  • 需要使用空格
  • 系统 对于命名 有要求
  • 邮件地址
  • 文件名
  • 网址
  • 代码中的标识符
This  character is sometimes used to create visual spacing within a sequence  of characters, where a whitespace characteris not permitted (e.g., in  computer filenames, email addresses, and in Internet URLs). Some  computer applications will automatically underline text surrounded by  underscores: underlined will render underlined. It is often used in plain text-only media (IRC, instant messaging, classical Email) for this purpose.
  • 这个时候 使用下划线 代替空格
When  the underscore is used for emphasis in this fashion, it is usually  interpreted as indicating that the enclosed text is underlined (as  opposed to being italicized or bold, which is indicated by /slashes/ or asterisks, respectively).
  • 依然可以表示强调

总结

  • 这次玩的 还是  下划线
  • 下划线 在变量定义的时候
  • 代替空格
  • 空格本身也很重要
  • 留白 让 代码
  • 提高可读性

  • 有什么方式
  • 可以 继续 提高可读性 吗??🤔
相关文章
|
18天前
|
人工智能 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、小括号和双引号等编程概念的来源。
125 80
|
2月前
|
人工智能 C语言 Python
[oeasy]python051_什么样的变量名能用_标识符_identifier
本文介绍了Python中变量名的命名规则,强调标识符(identifier)必须以字母或下划线开始,后续可包含字母、下划线及数字。通过`isidentifier()`函数可验证字符串是否为合法标识符。文中还探讨了为何数字不能作为标识符的开头,并提供了相关练习与解答,最后提及这些规则源自C语言的影响。
123 69
|
2月前
|
Python
[oeasy]python050_如何删除变量_del_delete_variable
本文介绍了Python中如何删除变量,通过`del`关键字实现。首先回顾了变量的声明与赋值,说明变量在声明前是不存在的,通过声明赋予其生命和初始值。使用`locals()`函数可查看当前作用域内的所有本地变量。进一步探讨了变量的生命周期,包括自然死亡(程序结束时自动释放)和手动删除(使用`del`关键字)。最后指出,删除后的变量将无法在当前作用域中被访问,并提供了相关示例代码及图像辅助理解。
124 68
|
26天前
|
人工智能 Unix Java
[oeasy]python059变量命名有什么规则_惯用法_蛇形命名法_name_convention_snake
本文探讨了Python中变量命名的几种常见方式,包括汉语拼音变量名、蛇形命名法(snake_case)和驼峰命名法(CamelCase)。回顾上次内容,我们主要讨论了使用下划线替代空格以提高代码可读性。实际编程中,当变量名由多个单词组成时,合理的命名惯例变得尤为重要。
63 9
|
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__`)是系统定义的标识符,具有特殊含义。
30 3
|
1月前
|
存储 Python
[oeasy]python056_python中下划线是什么意思_underscore_理解_声明与赋值_改名字
在Python中,下划线有多种用途。单下划线(_)常用于避免命名冲突,如将`max`改为`max_`以保留内置函数功能。双下划线(__var__)通常用于特殊方法和属性,如`__name__`、`__doc__`等。此外,单下划线(_)在交互式解释器中表示上一次表达式的值,但不建议作为普通变量名使用。总结:下划线用于避免命名冲突及特殊标识。
27 1
|
2月前
|
C语言 Python
[oeasy]python054_python有哪些关键字_keyword_list_列表_reserved_words
本文介绍了Python的关键字列表及其使用规则。通过回顾`hello world`示例,解释了Python中的标识符命名规则,并探讨了关键字如`if`、`for`、`in`等不能作为变量名的原因。最后,通过`import keyword`和`print(keyword.kwlist)`展示了Python的所有关键字,并总结了关键字不能用作标识符的规则。
43 9
|
22天前
|
存储 人工智能 Python
[oeasy]python061_如何接收输入_input函数_字符串_str_容器_ 输入输出
本文介绍了Python中如何使用`input()`函数接收用户输入。`input()`函数可以从标准输入流获取字符串,并将其赋值给变量。通过键盘输入的值可以实时赋予变量,实现动态输入。为了更好地理解其用法,文中通过实例演示了如何接收用户输入并存储在变量中,还介绍了`input()`函数的参数`prompt`,用于提供输入提示信息。最后总结了`input()`函数的核心功能及其应用场景。更多内容可参考蓝桥、GitHub和Gitee上的相关教程。
13 0