在 “Python 入门” 中,我们示范了如何从 math 模块中引入一些变量和函数(如 pi 和 sin).现在我们来学习 Python 模块的原理.
事实上,Python 的模块可以是任意一个普通的 .py 拓展名的文件.这个文件中可以定义全局变量,函数,类,甚至是可执行的命令.当我们要在其他 .py 文件中使用这个文件中的函数或全局变量,只需要声明把前者作为模块使用即可.
例如创建模块文件 mymodule.py 如下
# 函数
def plus1(num):
return num + 1
# 全局变量
num = 3.5
num2 = plus1(num)
在该模块中定义了一个函数和两个全局变量.注意在定义第二个变量时执行了函数 plus1,这个命令会在模块被调用时执行.
现在,我们我们在同一文件夹中新建如下 test.py,就可以用 import 语句来使用我们刚刚创建的模块.
import mymodule
print('num = ', mymodule.num)
print('num2 = ', mymodule.num2)
print('num2 + 1 = ', mymodule.plus1(mymodule.num2))
在 “Python 入门” 中我们还介绍了模块的不同导入方法,这里不再赘述.
除了内建模块外,Python 默认只会在当前文件夹(即路径)下搜索模块文件.若要添加其他搜索路径,可以在 import 命令之前使用
import sys
sys.path.insert(1, 路径)
其中 路径 既可以是绝对路径也可以是绝对路径.例如要指定当前路径的子文件夹 modules,则使用 'modules/' 即可;如果是上层文件夹中的子文件夹,可用 '../modules/'.
在上面的例子中,如果在 mymodule.py 文件中使用了 import 语句导入其他模块中的函数和变量等,那么在其 test.py 中也可以使用这些函数和变量.例如在 mymodule.py 第一行插入
from math import pi
那么在 test.py 中就可以使用 mymodule.pi 获取这个变量.但如果把这行改为
import math
那么在 test.py 中要使用 mymodule.math.pi 才能获取这个变量.
Python 中有几个内建模块(built-in module),可以随时导入.
(未完成)
在 Python 中,通常有这几种方式来表示时间:
时间戳(timestamp):通常来说,时间戳表示的是从 1970 年 1 月 1 日 00:00:00 开始按秒计算的偏移量.我们运行 type(time.time()),返回的是 float 类型.
格式化的时间字符串
元组(struct_time):struct_time 元组共有 9 个元素:(年,月,日,时,分,秒,一年中第几周,一年中第几天,夏令时)
随机生成内容.
import random
# 0,1之间时间生成的浮点数 float
print(random.random())
# 随机生成传入参数范围内的数字 即 1,2,3
print(random.randint(1, 3))
# 随机生成传入参数范围内的数字,range 顾头不顾尾
print(random.randrange(1, 3))
# 随机选择任意一个数字
print(random.choice([1, '23', [4, 5]]))
import sys
# 命令行参数List,第一个元素是程序本身路径
print(sys.argv)
# 结果['D:/Pycharm Community/python内置函数/sysTest.py']
# 获取Python解释程序的版本信息
print(sys.version)
os 模块是与操作系统交互的一个接口.
os.getcwd() # 获取当前工作目录,即当前python脚本工作的目录路径
os.chdir("dirname") # 改变当前脚本工作目录;相当于shell下cd
os.curdir # 返回当前目录: ('.')
os.makedirs('dirname1/dirname2') # 可生成多层递归目录
# 若目录为空,则删除,并递归到上一级目录,如若也为空,则删除,依此类推
os.removedirs('dirname1')
os.mkdir('dirname') # 生成单级目录
os.rmdir('dirname') # 删除单级空目录,若目录不为空则无法删除,报错;
# 列出指定目录下的所有文件和子目录,包括隐藏文件,并以列表方式打印
os.listdir('dirname')
os.remove() # 删除一个文件
os.rename("oldname","newname") # 重命名文件/目录
os.stat('path/filename') # 获取文件/目录信息
os.path.abspath(path) # 返回path规范化的绝对路径
os.path.split(path) # 将path分割成目录和文件名二元组返回
os.path.exists(path) # 如果path存在,返回True;如果path不存在,返回False
os.path.isabs(path) # 如果path是绝对路径,返回True
os.path.isfile(path) # 如果path是一个存在的文件,返回True.否则返回False
os.path.isdir(path) # 如果path是一个存在的目录,则返回True.否则返回False
os.path.join(path1[, path2[, ...]]) 将多个路径组合后返回