Error in user YAML: (<unknown>): found a tab character that violate indentation while scanning a plain scalar at line 3 column 3
---
- oeasy Python 0073
- 这是 oeasy 系统化 Python 教程,从基础一步步讲,扎实、完整、不跳步。愿意花时间学,就能真正学会。
- 本教程同步发布在:
- 个人网站: `https://oeasy.org`
- 蓝桥云课: `https://www.lanqiao.cn/courses/3584`
- GitHub: `https://github.com/overmind1980/oeasy-python-tutorial`
- Gitee: `https://gitee.com/overmind1980/oeasypython`
---- 配套视频
- 上次直接从模块中导入变量、函数
- from my_file import pi
- 导入my_file.pi
- 并作为 pi 使用
- from my_file import pi as my_pi
- 导入变量 并 重命名
- from my_file import pi
- 为什么 从模块中导入的变量 需要改名呢???🤔
- 回忆 冲突现场
from math import pi as math_pi
from my_file import pi as my_pi
print(locals())
- 为了避免
- local name clash
- 本地变量名 冲突
- python帮助 里
- 是
怎么说的 呢?
- 是
- 我们 看看pep-8
- 因此 要特别注意
不要使用from xxx import *
- 因为
- 这样 会把模块里面
所有的变量 导入进来- 特别容易
冲突 - local name clashes
- 这怎么理解呢?
:e test.py
- 导入 random中所有变量
from random import *
print(dir())- 结果 导入了很多成员变量
- 是不是都导入进来了呢?
from random import *
print(dir())
import random
print(dir(random))- 有一些变量没有被导入进来
- 这些变量以下划线(_)开头
- 是 模块的
内部变量
- 是 模块的
- 为什么
下划线开头- 就是 内部变量 呢?
- 去游乐场
help("topics")
- 查看帮助主题
- 应该找的主题是
- 标识符
- identifiers
help("IDENTIFIERS")
- 找到标识符的帮助
- 看到PEP3131
- 回忆 中文 可以作为 变量名
- ctrl+f
- 向后翻页
- 举个例子来说明
- from random import *
- *代表所有的
- 非下划线开头的变量
- 在random模块中 有很多变量和函数
- 非下划线开头的 可以被导入进来
- 下划线开头的 不能被导入进来
- 导入进来的
- 都是 没有 下划线的
- 如果 就想要
- 导入 带下划线的 内部变量 呢?
from random import _e- 指定好那个变量的名字
- 就可以
- 我就想要引入_e这个
内部变量- 有下划线开头的变量
- 是隐藏变量
- 需要点名导入
- 点名 导入
- 带下划线的 隐藏变量
- 就可以了
-
变量名
前面- 加下划线
- 指的是 模块内部变量
-
如果在 变量名
后面- 加 下划线
- 又是 什么意思 来着?
- 避免和函数、模块 重名
max_ = max(5, 6)
-
再回顾我们使用的是
- Snake Naming Convention
- 蛇形命名法
-
综合下划线的使用情况
| 位置和数量 | 作用 | 例子 |
|---|---|---|
| 单个下划线 | 上次表达式的值 | _ |
| 一个放前面 | 隐藏变量 | _e |
| 一个放后面 | 避免名字冲突 | max_ |
| 一个放前边 | 私有属性 | __attribute |
| 两个放两边 | 系统变量 | __builtins__ |
- 这次总结
下划线用法
- 想写个 实用点儿的程序??🤔
- 下次再说 👋
- 配套视频
- 本文来自 oeasy Python 系统教程。
- 想完整、扎实学 Python,
- 搜索 oeasy 即可。












