1. 对象有两种,“可更改”(mutable)与“不可更改”(immutable)对象。在python中,strings, tuples和numbers是不可更改的对象,而 list, dict, set 等则是可以修改的对象。
  2. 元组不可变
  3. file

所在模块:os
变量作用:获取当前文件的绝对路径,一般配合下面的函数来使用
当前文件的完整路径: os.path.realpath(file)
当前文件所属目录: os.path.dirname(os.path.realpath(file))
当前文件所属目录的上级目录: os.path.dirname(os.path.dirname(os.path.realpath(file)))

  1. python -m site 查看包搜索路径的命令,比sys.path更全

image.png
5.美化json格式 python -m json.tool xxx.json
image.png
6.python -c
image.png
7.快速搭建ftp服务器
image.png
8.pip install 安装包到哪
image.png
9.chain
image.png
10.解包列表
image.png
11.heapq
image.png
12.*
解包字典
image.png
13.读取大文件
image.png
image.png
14.没有root权限怎么安装第三方包
image.png
15.最优雅的列表和字符串反转
image.png
16.默认参数最好为不可变对象
image.png
image.png
image.png
17.模块包命名空间

模块

模块中可以包含模块级代码、函数和类。模块与模块之间是不能直接调用的,必须使用import关键字来导入。导入时,模块级代码一定会被执行,如果我们不想让某些代码执行,那么可以添加一句if name == ‘main‘:,例如

  1. if __name__ == '__main__':
  2. print('这里的代码,仅在该模块自身运行时执行')
  3. else:
  4. print('模块被导入时执行')

函数和类需要调用才会运行,所以不存在这个问题。

包是一个目录,特殊的地方在于需要包含一个init.py文件(内容可以为空),这是为什么呢?设想一下import hello这条语句,Python从哪去找hello这个包,C盘D盘E盘,成千上万个文件,范围太大了。所以需要把有Python模块的目录标出来,只查找这些目录就可以了。示例:

  1. sound/ 顶层包
  2. __init__.py 初始化 sound
  3. formats/ 文件格式转换子包
  4. __init__.py
  5. wavread.py
  6. wavwrite.py
  7. aiffread.py
  8. aiffwrite.py
  9. auread.py
  10. auwrite.py
  11. ...
  12. effects/ 声音效果子包
  13. __init__.py
  14. echo.py
  15. surround.py
  16. reverse.py
  17. ...
  18. filters/ filters 子包
  19. __init__.py
  20. equalizer.py
  21. vocoder.py
  22. karaoke.py
  23. ...

命名空间

命名冲突是个头疼的问题,Python提供了命名空间这个方法,把代码块划分为不同的命名空间,同一个命名空间不能重名,不同命名空间可以重名,如图所示:
Tips - 图17
命名空间一般有三种:
Tips - 图18

  • 内置:Python内置的名字。
  • 全局:模块中定义的名字,包括模块的函数、类、其他导入的模块、模块级的变量和常量。
  • 局部:函数中定义的名字,包括函数的参数和局部定义的变量。(类中定义的也是)

包里面是文件,文件名重复与否由操作系统判断。
18.