python中模块的导入方式
python中模块的导入方式
首先说一下本人在学习的时候最近好多方法好多模块都会忘掉有时候说出来还记得但是你说这个方法用什么模块就是想不起来是···
总结就是写得少,接下来不多说写一下我所学过的模块并且配合网上查阅尽量写的详细一点···
首先多模块这个概念进行介绍
首先啊,在python中我们熟知的py文件就是一个模块,也就是换言之以py结尾dePython源代码文件都是一个模块我就简单概括一下了直接上代码
模块的使用
使用模块里的工具前需要导入模块,
模块的导入方式之import·······
单个:
import 模块名
多个:
import 模块1
import 模块2
import 模块1,模块2(一般不推荐使用)(多个)
代码示范:
比方说你有一个py文件我们暂且叫他测试文件cs.py
#文件名:cs.py
x='一定要努力'
def get():
print(x)
def change():
global x
x=0
class Foo:
def func(self):
print('不然变垃圾')
导入模块并使用
要想在另外一个py文件中引用cs.py中的功能,需要使用import cs,首次导入模块会做三件事:
1、执行源文件代码
2、产生一个新的名称空间用于存放源文件执行过程中产生的名字
3、在当前执行文件所在的名称空间中得到一个名字cs,该名字指向新创建的模块名称空间,若要引用模块名称空间中的名字,需要加上该前缀,如下
代码示例:
"""导入cs模块"""
import cs
"""引用cs模块点中的x变量并重新赋值给当前名称空间中的zqh,zqh就具备了cs模块中x的值"""
zqh = cs.x
print(zqh)
""" 打印结果:一定要努力"""
"""调用cs的get函数"""
cs.get()
"""调用cs的change函数"""
cs.change()
"""使用模块cs的类Foo来实例化,进一步可以执行obj.func()"""
obj = cs.Foo()
obj.func()
注意:加上cs.作为前缀就相当于指名道姓地说明要引用cs.py名称空间中的名字,所以肯定不会与当前执行文件所在名称空间中的名字相冲突,并且若当前执行文件的名称空间中存在x,执行cs.get()或cs.change()操作的都是源文件中的全局变量x。
模块的导入方式之from-import 语句
既然他们都是导入模块的语句他们有何不同呢可能你们或许会有这个疑问
from...import...与import语句基本一致,唯一不同的是:使用import cs导入模块后,引用模块中的名字都需要加上cs.作为前缀,而使用from cs import x,get,change,Foo则可以在当前执行文件中直接引用模块cs中的名字,
还有这种:
from cs import * #把cs中所有的名字都导入到当前执行文件的名称空间中,在当前位置直接可以使用这些名字
代码示例
cs.py:
x='悟空'
def get():
print(x)
def change():
global x
x='b.py的x'
class Foo:
def func(self):
print('不然变垃圾')
change()
aa=Foo()
aa.func()
get()
a.py:
"""导入cs模块,并且导入cs模块中的方法导入当前名称空间"""
from cs import get,change,x
x='a.py的x'
"""直接使用模块cs中的x赋值给zqh"""
zqh=x
"""直接使用测试文件中的get()函数"""
get()
"""#即便是当前有文件有重名的x,修改的仍然是源文件中的x"""
change()
打印结果:
不然变垃圾
b.py的x
b.py的x
__all__变量用来控制*
模块的编写者可以在自己的文件中定义__all__变量用来控制*代表的意思
""" 该列表中所有的元素必须!!!是字符串类型,每个元素!对应!cs.py中的一个名字"""
cs.py:
__all__=['x','get','change']
x='悟空'
def get():
print(x)
def change():
global x
x='b.py的x'
class Foo:
def func(self):
print('不然变垃圾')
a.py:
"""这样我们在另外一个文件中使用*导入时,就只能导入__all__定义的名字了"""
from cs import *
"""__all__列表存在get可用"""
print(get())
"""__all__列表存在change可用"""
print(change())
"""__all__列表存在x可用"""
print(x)
"""__all__列表不存在Foo不可用"""
aaa=Foo() #报错NameError: name 'Foo' is not defined
导入语法as(起别名)
import cs as zqh
#为导入的模块cs在当前位置起别名zqh,以后再使用时就用这个别名zqh
zqh.x
zqh.get()
还可以为为导入模块的某一个名字起一个别名
例如:
from cs import get as cs_get
cs_get()
小知识
、在Python中模块也属于第一类对象,可以进行赋值、以数据形式传递以及作为容器类型的元素等操作。
#2、模块名应该遵循小写形式,标准库从python2过渡到python3做出了很多这类调整,比如ConfigParser、Queue、SocketServer全更新为纯小写形式。
希望对大哥们有用······
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 一文读懂知识蒸馏
· 终于写完轮子一部分:tcp代理 了,记录一下