python学习:模块的导入方式教程

简介: 首先啊,在python中我们熟知的py文件就是一个模块,也就是换言之以py结尾的Python源代码文件都是一个模块我就简单概括一下了直接上代码

首先啊,在python中我们熟知的py文件就是一个模块,也就是换言之以py结尾的Python源代码文件都是一个模块我就简单概括一下了直接上代码

1.模块的使用

使用模块里的工具前需要导入模块,
模块的导入方式之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('不然变垃圾')

2.导入模块并使用

要想在另外一个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。

3.模块的导入方式之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

4.__all__变量用来控制*

模块的编写者可以在自己的文件中定义__all__变量用来控制*代表的意思

""" 该列表中所有的元素必须!!!是字符串类型,每个元素!对应!cs.py中的一个名字"""
#Python学习交流群:153708845
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()

5.总结

在Python中模块也属于第一类对象,可以进行赋值、以数据形式传递以及作为容器类型的元素等操作。

模块名应该遵循小写形式,标准库从python2过渡到python3做出了很多这类调整,比如ConfigParser、Queue、SocketServer全更新为纯小写形式。

相关文章
|
7月前
|
SQL 关系型数据库 数据库
Python SQLAlchemy模块:从入门到实战的数据库操作指南
免费提供Python+PyCharm编程环境,结合SQLAlchemy ORM框架详解数据库开发。涵盖连接配置、模型定义、CRUD操作、事务控制及Alembic迁移工具,以电商订单系统为例,深入讲解高并发场景下的性能优化与最佳实践,助你高效构建数据驱动应用。
835 7
|
7月前
|
存储 Java 数据处理
(numpy)Python做数据处理必备框架!(一):认识numpy;从概念层面开始学习ndarray数组:形状、数组转置、数值范围、矩阵...
Numpy是什么? numpy是Python中科学计算的基础包。 它是一个Python库,提供多维数组对象、各种派生对象(例如掩码数组和矩阵)以及用于对数组进行快速操作的各种方法,包括数学、逻辑、形状操作、排序、选择、I/0 、离散傅里叶变换、基本线性代数、基本统计运算、随机模拟等等。 Numpy能做什么? numpy的部分功能如下: ndarray,一个具有矢量算术运算和复杂广播能力的快速且节省空间的多维数组 用于对整组数据进行快速运算的标准数学函数(无需编写循环)。 用于读写磁盘数据的工具以及用于操作内存映射文件的工具。 线性代数、随机数生成以及傅里叶变换功能。 用于集成由C、C++
569 2
|
7月前
|
存储 JavaScript Java
(Python基础)新时代语言!一起学习Python吧!(四):dict字典和set类型;切片类型、列表生成式;map和reduce迭代器;filter过滤函数、sorted排序函数;lambda函数
dict字典 Python内置了字典:dict的支持,dict全称dictionary,在其他语言中也称为map,使用键-值(key-value)存储,具有极快的查找速度。 我们可以通过声明JS对象一样的方式声明dict
426 1
|
7月前
|
监控 安全 程序员
Python日志模块配置:从print到logging的优雅升级指南
从 `print` 到 `logging` 是 Python 开发的必经之路。`print` 调试简单却难维护,日志混乱、无法分级、缺乏上下文;而 `logging` 支持级别控制、多输出、结构化记录,助力项目可维护性升级。本文详解痛点、优势、迁移方案与最佳实践,助你构建专业日志系统,让程序“有记忆”。
550 0
|
7月前
|
JSON 算法 API
Python中的json模块:从基础到进阶的实用指南
本文深入解析Python内置json模块的使用,涵盖序列化与反序列化核心函数、参数配置、中文处理、自定义对象转换及异常处理,并介绍性能优化与第三方库扩展,助你高效实现JSON数据交互。(238字)
592 4
|
7月前
|
索引 Python
Python 列表切片赋值教程:掌握 “移花接木” 式列表修改技巧
本文通过生动的“嫁接”比喻,讲解Python列表切片赋值操作。切片可修改原列表内容,实现头部、尾部或中间元素替换,支持不等长赋值,灵活实现列表结构更新。
321 1
|
7月前
|
Java 调度 数据库
Python threading模块:多线程编程的实战指南
本文深入讲解Python多线程编程,涵盖threading模块的核心用法:线程创建、生命周期、同步机制(锁、信号量、条件变量)、线程通信(队列)、守护线程与线程池应用。结合实战案例,如多线程下载器,帮助开发者提升程序并发性能,适用于I/O密集型任务处理。
685 0
|
7月前
|
XML JSON 数据处理
超越JSON:Python结构化数据处理模块全解析
本文深入解析Python中12个核心数据处理模块,涵盖csv、pandas、pickle、shelve、struct、configparser、xml、numpy、array、sqlite3和msgpack,覆盖表格处理、序列化、配置管理、科学计算等六大场景,结合真实案例与决策树,助你高效应对各类数据挑战。(238字)
902 0
|
Python
答粉丝问|Python中模块导入方法的比较
答粉丝问|Python中模块导入方法的比较
223 0
|
JSON 数据格式 Python
Python基础 模块化编程(模块的导入) 模块化编程 模块以主程序的方式运行 包和目录 第三方库的安装和导入方法
python基础知识模块,模块化编程,模块的创建和导入 python基础,模块的创建和导入,让模块以主程序的方式运行,python中的包和目录的区别和创建。模块导入另一个包的模块的方法,导入带有包的模块时的注意事项,常见的内置模块。 第三方模块的安装和导入的方法
Python基础 模块化编程(模块的导入)   模块化编程 模块以主程序的方式运行 包和目录 第三方库的安装和导入方法

推荐镜像

更多