导入import

回忆上次内容

  • 上次直接从模块中导入变量、函数
  • from my_file import pi
  • 导入my_file.pi
  • 并作为 pi 使用
  • from my_file import pi as my_pi
  • 导入变量 并 重命名

[oeasy]python073_下划线在python里是什么含义_内部变量_私有变量_系统变量_变量名

  • 为什么 从模块中导入的变量 需要改名呢???🤔

冲突(local name clashes)

  • 回忆 冲突现场
from math import pi as math_pi

from my_file import pi as my_pi

print(locals())
  • 为了避免
  • local name clash
  • 本地变量名 冲突

[oeasy]python073_下划线在python里是什么含义_内部变量_私有变量_系统变量_变量名_02

  • python帮助 里
  • 怎么说的 呢?

pep8

  • 我们 看看pep-8

[oeasy]python073_下划线在python里是什么含义_内部变量_私有变量_系统变量_下划线_03

  • 因此 要特别注意
  • 不要使用from xxx import *
  • 因为
  • 这样 会把模块里面
  • 所有的变量 导入进来
  • 特别容易 冲突
  • local name clashes
  • 这怎么理解呢?

做个测试

:e test.py
  • 导入 random中所有变量
from random import *
print(dir())
  • 结果 导入了很多成员变量

[oeasy]python073_下划线在python里是什么含义_内部变量_私有变量_系统变量_下划线_04

  • 是不是都导入进来了呢?

观察模块目录

from random import *
print(dir())
import random
print(dir(random))
  • 有一些变量没有被导入进来

[oeasy]python073_下划线在python里是什么含义_内部变量_私有变量_系统变量_下划线_05

  • 这些变量以下划线(_)开头
  • 是 模块的 内部变量
  • 为什么 下划线开头
  • 就是 内部变量 呢?

寻找主题

  • 去游乐场
help("topics")
  • 查看帮助主题

[oeasy]python073_下划线在python里是什么含义_内部变量_私有变量_系统变量_变量名_06

  • 应该找的主题是
  • 标识符
  • identifiers

标识符

help("IDENTIFIERS")
  • 找到标识符的帮助

[oeasy]python073_下划线在python里是什么含义_内部变量_私有变量_系统变量_标识符_07

  • 看到PEP3131
  • 回忆 中文 可以作为 变量名

翻页

  • ctrl+f
  • 向后翻页

[oeasy]python073_下划线在python里是什么含义_内部变量_私有变量_系统变量_下划线_08

  • 举个例子来说明

理解内部

  • from random import *
  • *代表所有的
  • 非下划线开头的变量

[oeasy]python073_下划线在python里是什么含义_内部变量_私有变量_系统变量_变量名_09

  • 在random模块中 有很多变量和函数
  • 非下划线开头的 可以被导入进来
  • 下划线开头的 不能被导入进来

[oeasy]python073_下划线在python里是什么含义_内部变量_私有变量_系统变量_标识符_10

  • 导入进来的
  • 都是 没有 下划线的
  • 如果 就想要
  • 导入 带下划线的 内部变量 呢?

点名道姓

from random import _e
  • 指定好那个变量的名字
  • 就可以

[oeasy]python073_下划线在python里是什么含义_内部变量_私有变量_系统变量_变量名_11

  • 我就想要引入_e这个内部变量
  • 有下划线开头的变量
  • 是隐藏变量
  • 需要点名导入

变量

  • 点名 导入
  • 带下划线的 隐藏变量
  • 就可以了

[oeasy]python073_下划线在python里是什么含义_内部变量_私有变量_系统变量_下划线_12

  • 变量名 前面
  • 加下划线
  • 指的是 模块内部变量
  • 如果在 变量名 后面
  • 加 下划线
  • 又是 什么意思 来着?

回忆命名法中的下划线

  • 避免和函数、模块 重名
max_ = max(5, 6)
  • 再回顾我们使用的是
  • Snake Naming Convention
  • 蛇形命名法
  • 综合下划线的使用情况

位置和数量

作用

例子

单个下划线

上次表达式的值

_

一个放前面

隐藏变量

_e

一个放后面

避免名字冲突

max_

一个放前边

私有属性

__attribute

两个放两边

系统变量

__builtins__

总结

  • 这次总结 下划线 用法

[oeasy]python073_下划线在python里是什么含义_内部变量_私有变量_系统变量_下划线_13

  • 想写个 实用点儿的程序??🤔
  • 下次再说 👋