Python怎么深入模块进行学习?

Python08

Python怎么深入模块进行学习?,第1张

6.1. 深入模块

除了包含函数定义外,模块也可以包含可执行语句。这些语句一般用来初始化模块。他们仅在 第一次 被导入的地方执行一次。[1]

每个模块都有自己私有的符号表,被模块内所有的函数定义作为全局符号表使用。因此,模块的作者可以在模块内部使用全局变量,而无需担心它与某个用户的全局变量意外冲突。从另一个方面讲,如果你确切的知道自己在做什么,你可以使用引用模块函数的表示法访问模块的全局变量,modname.itemname。

模块可以导入其他的模块。一个(好的)习惯是将所有的 import 语句放在模块的开始(或者是脚本),这并非强制。被导入的模块名会放入当前模块的全局符号表中。

import 语句的一个变体直接从被导入的模块中导入命名到本模块的语义表中。例如:

>>>from fibo import fib, fib2

>>>fib(500)

1 1 2 3 5 8 13 21 34 55 89 144 233 377

这样不会从局域语义表中导入模块名(如上所示, fibo 没有定义)。

甚至有种方式可以导入模块中的所有定义:

>>>from fibo import *

>>>fib(500)

1 1 2 3 5 8 13 21 34 55 89 144 233 377

这样可以导入所有除了以下划线( _ )开头的命名。

需要注意的是在实践中往往不鼓励从一个模块或包中使用 * 导入所有,因为这样会让代码变得很难读。不过,在交互式会话中这样用很方便省力。

列表和元组都是一个可以放置任意数据类型的有序集合。这里需要注意三个词,任意、有序、集合,其实就是说明列表和元组是可以放置任意数据类型,其次是有序的,另外,它是一个集合。

列表是动态的,它的长度大小不固定的,可以随意的增加、删除或者改变。

元组是静态的,它的长度大小是固定的,无法增加、删除或者改变。

列表是动态的、可变的,而元组是静态的、不可变的。

列表的存储方式,如下所示:

元组的存储方式,如下所示:

存储同样的元素,元组使用的存储空间更小,要少16个字节。这是因为列表是动态的,所以列表中要存储指针,来指向对应的元素。另外,列表是可变的,所以需要额外存储已经分配的存储信息,因为它要知道现在已经存储了多少信息,还剩下多少,需不需要额外分配存储空间等等。所以,列表多出来的存储空间主要是:指针 + 存储空间长度。

如下例子可以看到列表存储空间的变化:

列表存储空间变化:

从列表和元组的存储方式可以得出,元组的性能是优于列表的。

元组和列表的初始化性能比较:

这是os模块下操作目录和文件相关的函数

listdir() 只返回文件夹下所有文件名的列表(list)

math 模块则会把参数转换为 float。

listdir()方法语法格式如下:

参数

path -- 需要列出的目录路径,默认为当前路径

其他相关的操作文件(文件夹)函数如下:

当我们需要遍历某个文件夹下文件/目录通常有两种操作

当获取文件后如何获取其后缀名,判断是否指定格式的文档、图片比如txt,doc,bmp,png,gif,jpg等:

熟练操作文件和目录,可以帮组我们写批量脚本时更高效,也是重要的python基础之一。

对基础运行环境有疑问的,推荐参考: python函数深入浅出 0.基础篇