show | version | enable_checker |
---|---|---|
step |
1.0 |
true |
- 上次我们研究了跨模块引用变量
- 在一个py文件里面定义的变量
- 变量一定不能是函数内部的局部变量
- 然后我们就可以在python中引入这个变量了
- 但是这个变量来自于什么呢?
- 有的来自于c编译好的内建模块
- 还有的来自于py文件
- 这些py文件有一些来自于同一个地方
- 我们去这个地方看看么?
- 先进入/usr/lib/python3.8
- 然后ls观察
- 找到很多熟悉的模块
- this.py
- opcode.py
- pickle.py
- random.py
- os.py
vi os.py
- 先看看os.py
- os.py 是只读的
- 上来之后
- 首先有个模块说明文档
- 然后引入了一些其他的模块
- 函数怎么定义的呢?
- 首先用三引号描述了函数
- 然后定义一些操作
- 那然后我就能用了么?
- 这是一个列表
- 能找到makedirs函数么?
- 导入os模块
- 尝试添加文件夹
- 出现了 PermissionError 权限错误
- 刚才 os.py 也只有 读取权限
- 注意最好在用户文件夹(~)运行python3
cd ~
python3
- 否则可能没有建立文件夹的权限
- 好像确实有
- 确实也能建立一个文件夹
- 那我可以去看看么?
- 确实可以的
- os里面包括很多函数
- makedirs
- listdir
- 那我们的print、str之类的函数在那个模块里面呢?
- 这些函数太熟悉了
- 就在builtins里面
- 天生就有
- 除非你del他
- 否则就一直在
- 那builtins到底是怎么定义的呢?
- builtins是在c语言层面的
- 已经用c编译成可执行文件
- 直接就加载了
- 突发奇想
- random到底是怎么随机的
- 上来之后是模块简介
- 查找randint
- 好像是通过调用randrange完成的
- 把开始结束步长错误排除后
- 通过调用_randbelow函数完成的
- _randbelow是一个变量
- 是一个函数类型的变量
- 指向_randbelow_with_getrandbits这个方法
- 这个是从_urandom函数来的
- _urandom是从os来的...
- 找不到urandom
- 只能去c语言源码里面找...
- 查到说这里面有urandom
- 确认了当前系统是linux之后
- 通过访问/dev/urandom来完成的
- 这个文件怎么来的
- 我们这次不研究了
- 总之python用的是
- /dev/urandom
- 用就完了
- 我们这次研究了跨文件模块调用函数
- 使用了两个模块
- os
- random
- 其中random还调用了os
- os有两部分组成
- os.py
- 还有一些系统调用的部分
- 是系统相关的
- 写在c的源码中
- 我可以自己定义一些
- 模块
- 变量
- 函数么?🤔
- 我们下次再说👋