show | version | enable_checker |
---|---|---|
step |
1.0 |
true |
- 上次直接从模块中导入变量、函数
- 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__ |
- 这次总结
下划线
用法
- 想写个 实用点儿的程序??🤔
- 下次再说 👋