python库和模块的区别_Python基础教程(9)模块和包与Python标准库

本文详细介绍了Python项目的组织结构,包括包、模块和类的定义与相互关系。强调了包内必须包含__init__.py文件以使文件夹成为包,并解释了__init__.py在初始化时的角色。此外,文章还探讨了如何使用import和from导入模块,以及如何通过__all__指定通配符导入的范围。同时,提到了Python标准库中的sys、os、math、random等模块的功能和使用示例。
摘要由CSDN通过智能技术生成

一个完整的Python项目组织结构由包、模块、类构成。不同的包和模块之间的数据可以互相调用,实现结构化。包可以理解为一个文件夹,模块则是文件夹中一个一个的文件(每个.py文件都是一个模块),一个包下面可以包含很多的模块,一个模块又可以包含很多的类文件。需要注意包虽然可以理解为文件夹,但是并不代表文件夹就是包,如果要让一个文件夹成为包,其中必须包含一个__init__.py文件。包内所有模块都会先执行一次该文件中的内容,。虽然该文件通常是一个空文件,但也可以写入一些配置作为全局配置。

一、Python模块的引用

1、使用import语句导入模块。

import 包名.模块名

由于import导入的只是模块,具体的变量还需要使用完整的命名空间进行引用,如下:

#在同一个包中引用不同模块的变量

cat file1.py

name = "linuxe"

cat file2.py

import file1

print (file1.name)

#在不同包中引用变量

name = "tanglu" #package1.file3中定义该变量

import package1.file3 #在package2.file4中进行引用

print (package1.file3.name)

#使用as指令简化命名空间。当要引用的模块层级较深时,写全路径就比较麻烦,使用as可以起别名简化路径

import package1.module1.module1_modole2_module3 as m

pritn (m.var)

2、使用from语句导入具体的模块或者变量,但建议直接引用变量到变量层级,否则就和import一样有书写命名空间的问题

from package1.var1 import name #导入package1包中var1模块的name变量

print (name) #直接引用name变量

from package1.var1 import * #可使用通配符导入模块中的所有变量,但通常不建议这样

from package1.var1 import a,b,c #可直接指定模块中的多个变量

#在被导入的模块中加入__all__语句可以指定*号导入时的生效范围

__all__ = ['a','b','c',]

a = 1

b = 2

c = 3

d = 4

from package1.var1 import * #这个时候*号导入的变量不包含d

二、init.py文件的作用

该文件通常用于对包或模块做初始化操作,在导入包或模块时,该文件中的代码会被自动执行。也可以通过该文件指定哪些模块可以被导入

cat __init__.py

__all__ = ['c7'] #只有c7模块会被导入

from package1 import *

print (c7.a) #正常导入c7模块

print (c8.a) #不会有数据被导入

如果有大量模块需要导入一个相同的库,可以写在__init__.py文件

cat __init__.py

import sys

import datetime

三、Python标准库

Python自带了一个强大的标准库,内置了非常多的模块可以直接使用,由于每个模块都包含了大量的函数,这里只写了一些较为常用的作为学习。除了在网上查询模块支持的函数,还可以通过pycharm补全来获得相关信息:

1、sys模块:用于获取python自身相关信息的模块

import sys

print (sys.version) #Python版本

print (sys.platform) #系统平台

print (sys.argv) #运行脚本时所添加的命令行参数,有多少个参数就会打印多少个

2、os模块:用来对系统做管理的模块,通常用来操作磁盘或者目录

import os

print (os.name) #获取操作系统的类型

print (os.environ['path']) #获取操作系统的环境变量,这里是获取了path这个变量

print (os.getcwd()) #获取当前目录

print (os.listdir('c:/')) #列出指定目录中的内容

os.system('ipconfig') #执行系统命令,如ipconfig

3、math模块:用于做运算的模块

4、random模块:生成随机数的模块

print (random.randint(1,101)) #返回1-100之间的随机整数

print (random.sample([1,2,14,24,6],2)) #从数组中返回2个随机元素

5、正则文字处理模块:re

6、日期类型模块:time、datetime

7、datetime模块:和时间设置相关的模块

print (datetime.now()) #返回当前时间

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值