Skip to content

Latest commit

 

History

History
119 lines (83 loc) · 2.88 KB

203-547655-内建_builtins_模块研究.sy.md

File metadata and controls

119 lines (83 loc) · 2.88 KB
show version enable_checker
step
1.0
true

跨模块引用变量

回忆

  • 上次我们研究了文件模块(module)
    • 不同的模块有各自的全局(global)变量字典
  • import A之后
    • 可以用A.a引用A模块内的全局(global)变量
    • 也可以引入(import)别的模块的全局(global)变量
    • 彼此不会互相影响
  • 如果都使用from A import a这种模式
    • 可能a会被其他的模块中a覆盖
    • 这有点危险
  • 各种数据来自不同的名字空间
    • time
    • math
    • oeasy
    • __builtins__
  • 已经有一些比较成熟的模块了
  • 如何理解这些已经内建好的模块呢?🤔

math

图片描述

  • 还有什么模块有常量么?

time

  • 在游乐场键入time.之后
    • 键入tab
    • 可以提示成员变量和成员方法

图片描述

  • time里面有
    • 很多函数
    • 常量
      • alterzone

图片描述

  • 确实可以看到
    • time.altzone
  • 那这个变量能改么?

修改

图片描述

  • 不但能改
  • 好像还能删除
  • 那math.pi这些可以修改么?
  • 写个python程序

修改

图片描述

  • 确实是可以修改的
  • 但是time这个module在哪里呢?

查询module位置

  • 还记得我们遍历sys.modules这个字典么

图片描述

  • time是一个内置的模块
  • 不过他还是需要import之后才能使用的
  • 那这个time的源文件在哪里呢?

源头

  • time模块并不对应一个python文件

图片描述

  • time是纯c的文件编译进去的
    • 内嵌在python中的
    • 无需加载的
  • 还有什么用过的模块么?

用过的模块(module)

图片描述

  • 这些文件来自于哪里呢?

来源

  • 我们曾经使用过这些包

图片描述

  • random获得随机数
  • copy进行浅拷贝和深拷贝
  • os获得当前路径
  • 这些包给我们提供api(application programming interface)

图片描述

  • 我们先去总结
  • 下次再去那个地方玩

总结

  • 这次我们研究了引用内建模块的变量
  • 但是这个变量来自于什么呢?
    • 有的来自于c编译好的内建模块
    • 还有的来自于py文件
    • 这些py文件有一些来自于同一个地方
  • 我们去这个地方看看么?🤔
  • 我们下次再说👋