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全更新为纯小写形式。

相关文章
|
2月前
|
存储 算法 API
【01】整体试验思路,如何在有UID的情况下获得用户手机号信息,python开发之理论研究试验,如何通过抖音视频下方的用户的UID获得抖音用户的手机号-本系列文章仅供学习研究-禁止用于任何商业用途-仅供学习交流-优雅草卓伊凡
【01】整体试验思路,如何在有UID的情况下获得用户手机号信息,python开发之理论研究试验,如何通过抖音视频下方的用户的UID获得抖音用户的手机号-本系列文章仅供学习研究-禁止用于任何商业用途-仅供学习交流-优雅草卓伊凡
277 82
|
7天前
|
数据采集 搜索推荐 API
Python 原生爬虫教程:京东商品列表页面数据API
京东商品列表API是电商大数据分析的重要工具,支持开发者、商家和研究人员获取京东平台商品数据。通过关键词搜索、分类筛选、价格区间等条件,可返回多维度商品信息(如名称、价格、销量等),适用于市场调研与推荐系统开发。本文介绍其功能并提供Python请求示例。接口采用HTTP GET/POST方式,支持分页、排序等功能,满足多样化数据需求。
|
7天前
|
数据采集 API 数据格式
Python 原生爬虫教程:京东商品详情页面数据API
本文介绍京东商品详情API在电商领域的应用价值及功能。该API通过商品ID获取详细信息,如基本信息、价格、库存、描述和用户评价等,支持HTTP请求(GET/POST),返回JSON或XML格式数据。对于商家优化策略、开发者构建应用(如比价网站)以及消费者快速了解商品均有重要意义。研究此API有助于推动电商业务创新与发展。
|
7天前
|
数据采集 存储 监控
Python 原生爬虫教程:网络爬虫的基本概念和认知
网络爬虫是一种自动抓取互联网信息的程序,广泛应用于搜索引擎、数据采集、新闻聚合和价格监控等领域。其工作流程包括 URL 调度、HTTP 请求、页面下载、解析、数据存储及新 URL 发现。Python 因其丰富的库(如 requests、BeautifulSoup、Scrapy)和简洁语法成为爬虫开发的首选语言。然而,在使用爬虫时需注意法律与道德问题,例如遵守 robots.txt 规则、控制请求频率以及合法使用数据,以确保爬虫技术健康有序发展。
|
1月前
|
机器学习/深度学习 数据采集 数据可视化
Python/Anaconda双方案加持!Jupyter Notebook全平台下载教程来袭
Jupyter Notebook 是一款交互式编程与数据科学分析工具,支持40多种编程语言,广泛应用于机器学习、数据清洗和学术研究。其核心优势包括实时执行代码片段、支持Markdown文档与LaTeX公式混排,并可导出HTML/PDF/幻灯片等格式。本文详细介绍了Jupyter Notebook的软件定位、特性、安装方案(Anaconda集成环境与原生Python+PIP安装)、首次运行配置及常见问题解决方案,帮助用户快速上手并高效使用该工具。
|
1月前
|
Shell Python
[oeasy]python072_名字空间是怎么玩的_from_import_as_导入_namespace
本文介绍了Python中名字空间和模块导入的使用方法。主要内容包括: 1. **回忆上次内容**:回顾了之前导入系统模块(如`__hello__`、`time`)和自定义模块(如`my_file`),并介绍了如何导入和使用模块中的变量。 2. **从shell开始**:展示了如何在命令行中编辑和切换文件,以及如何通过`import`语句引入模块。 3. **修改oeasy.py**:演示了如何通过`import my_file`导入模块,并将模块中的`pi`赋值给本地变量`pi`。 4. **locals()函数**:解释了如何使用`locals()`查看当前作用域内的本地变量及其值。
40 8
|
1月前
|
SQL 关系型数据库 MySQL
milvus-use教程 python
本项目参考vanna项目,获取数据库元数据和问题SQL对,存入Milvus向量数据库,并进行相似性检索。采用m3e-large嵌入模型,通过DatabaseManager类实现数据库连接持久化,MilvusVectorStore类封装了Milvus操作方法,如创建集合、添加数据和查询。项目提供init_collections、delete_collections等文件用于初始化、删除和管理集合。所用Milvus版本较新,API与vanna项目不兼容。 [项目地址](https://gitee.com/alpbeta/milvus-use)
157 9
|
1月前
|
人工智能 自然语言处理 Shell
[oeasy]python070_如何导入模块_导入模块的作用_hello_dunder_双下划线
本文介绍了如何在Python中导入模块及其作用,重点讲解了`__hello__`模块的导入与使用。通过`import`命令可以将外部模块引入当前环境,增强代码功能。例如,导入`__hello__`模块后可输出“Hello world!”。此外,还演示了如何使用`help()`和`dir()`函数查询模块信息,并展示了导入多个模块的方法。最后,通过一个实例,介绍了如何利用`jieba`、`WordCloud`和`matplotlib`模块生成词云图。总结来说,模块是封装好的功能部件,能够简化编程任务并提高效率。未来将探讨如何创建自定义模块。
43 8
|
1月前
|
缓存 Shell 开发工具
[oeasy]python071_我可以自己做一个模块吗_自定义模块_引入模块_import_diy
本文介绍了 Python 中模块的导入与自定义模块的创建。首先,我们回忆了模块的概念,即封装好功能的部件,并通过导入 `__hello__` 模块实现了输出 "hello world!" 的功能。接着,尝试创建并编辑自己的模块 `my_file.py`,引入 `time` 模块以获取当前时间,并在其中添加自定义输出。
40 4
|
2月前
|
大数据 开发者 C++
Python语法糖详解教程
《Python语法糖详解教程》介绍了编程语言中的“语法糖”,即通过特殊语法形式简化代码,使代码更简洁、易读和高效。文章详细解析了列表推导式、字典推导式、元组解包、条件表达式、with语句和装饰器等核心语法糖,并提供了具体示例和最佳实践指南。通过这些技巧,开发者可以在保持底层功能不变的前提下,显著提升开发效率和代码质量。
72 8