首页 > 编程语言 >Python教程(17)——python模块是什么?python模块详解

Python教程(17)——python模块是什么?python模块详解

时间:2023-12-24 16:57:13浏览次数:43  
标签:__ 17 python py 导入 模块 import math

Python模块简介

模块是一个包含了Python定义和语句的文件,可用于将功能组织成可重用和可维护的代码块。每个Python文件都可以作为一个模块,模块可以包含变量、函数、类或可执行代码。通过使用模块,我们可以将代码分离成逻辑单元,促进模块化编程。所以我们可以简单的理解为,一个py文件就是一个模块,大部分情况都是这样的。

使用Python模块

在Python中,要想使用Python模块,我们必须要将模块导入,这里可以使用import关键字。

导入整个模块

import module_name

这种方式会导入整个模块,你可以使用module_name来访问其中的函数、变量和类。例如,要导入math模块:

import math

result = math.sqrt(16)
print(result)  # 输出:4.0

导入特定对象

from module_name import object_name

这种方式会导入指定的函数、变量或类,你可以直接使用该对象而不需要加上模块名。例如,要仅导入math模块中的sqrt函数:

from math import sqrt

result = sqrt(16)
print(result)  # 输出:4.0

使用别名导入

import module_name as alias_name

这种方式可以给导入的模块指定一个别名,方便使用。例如,要将datetime模块导入并命名为dt:

import datetime as dt

now = dt.datetime.now()
print(now)  # 输出当前的日期和时间

此外,还可以使用from module_name import *的形式导入模块中的所有对象。但是不推荐这种方式,因为它会导入模块中的所有对象,可能造成命名冲突或意外的行为。最好的做法是显式导入需要使用的对象。

寻找路径的顺序

需要注意的是,Python会按照一定的搜索路径来查找模块,其中包括当前目录、Python标准库的安装目录以及其他已添加的路径。如果要导入自定义的模块或第三方模块,需要将其所在的路径添加到系统的搜索路径中。
比如当前目录中有个math.py文件,自己的文件是main.py

my_project/
├── main.py
└── math.py

math.py的文件内容

print("this is math module")

main.py的文件内容

import math
# 使用math模块中的函数和常量
result = math.sqrt(25)
print(result)  

按正常来说,这个应该输出5的,当时如果你运行main.py会发现,发生了异常。

# python main.py 
this is math module
Traceback (most recent call last):
  File "/root/main.py", line 4, in <module>
    result = math.sqrt(25)
AttributeError: module 'math' has no attribute 'sqrt'

这是因为导入模块的时候,最先是在当前目录下查找,如果找到了,就直接用当前目录的模块,上面main.py中导入了math模块,而当前目录下刚好有一个math.py,所以就被导入了,但是这个文件中又没有sqrt方法,所以就报错了。所以在导入模块的时候一定要注意这种情况。

__all__特殊用法

前面我们说到了,from module_name import *的形式会导入模块中的所有对象,但是通过加入__all__变量的方式可以方便的选择导入的对象。

__all__是一个特殊的变量,用于定义模块的公共接口。在Python中,可以在模块中定义__all__变量,并将其设置为一个包含模块中所有公共对象名称的列表。这样当使用from module import *语句导入模块时,只有__all__列表中列出的对象才会被导入,而其他未列出的对象将不会被导入。

# mymodule.py

__all__ = ['func1', 'func2']

def func1():
    pass

def func2():
    pass

def _private_func():
    pass

mymodule.py模块定义了两个公共函数func1()func2()以及一个私有函数_private_func()。通过将__all__设置为只包含func1()func2()的列表,只能从该模块中导入这两个函数,而不能导入其他函数或变量。

使用示例:

from mymodule import *

print(func1())  # 输出:<function func1 at 0x7f8c6d3a4b50>
print(func2())  # 输出:<function func2 at 0x7f8c6d3a4b90>
print(_private_func)  # 报错:NameError: name '_private_func' is not defined

我们使用from mymodule import *语句导入了mymodule模块中的所有公共对象。可以看到,只有func1()func2()被成功导入,而私有函数_private_func()没有被导入。如果尝试访问未导入的私有函数,将会引发NameError异常。

导入第三方模块

所谓第三方模块就是非python标准库的包,使用的时候需要通过pip的方式来安装,安装完之后使用方法和上面的完全一样。

更多精彩内容,请关注同名公众:一点sir(alittle-sir)

标签:__,17,python,py,导入,模块,import,math
From: https://www.cnblogs.com/kiwiblog/p/17924543.html

相关文章

  • Python3.12新增内容
    https://medium.com/techtofreedom/5-handy-python-3-12-new-features-that-improve-your-coding-experience-fe2d6e1f05b4类型系统,更方便的类型别名声明方式简便的类型别名声明我们可以直接如下定义类型别名Point=tuple[float,float]classPointTest: def__init__(s......
  • Python教程(16)——lambda表达式详解
    lambda函数介绍我们平时经常可以在Python的代码中看到一种lambda开头的这种表达式,如果没有学过Python的相关知识,可能会一脸懵逼,不清楚到底这个关键字是干嘛的,用来表示什么。实际上这个就是lambda函数。lambda函数是Python中一种特殊的匿名函数,但不仅仅只存在Python中,它允许我们......
  • Python教程(16)——lambda表达式详解
    lambda函数介绍我们平时经常可以在Python的代码中看到一种lambda开头的这种表达式,如果没有学过Python的相关知识,可能会一脸懵逼,不清楚到底这个关键字是干嘛的,用来表示什么。实际上这个就是lambda函数。lambda函数是Python中一种特殊的匿名函数,但不仅仅只存在Python中,它允许我们......
  • WN517GP无线网卡
    WN517Gp是一款高功率无线网卡,其传输距离可达到1000米。这款网卡配备了可拆卸的外部天线,用户可以根据需求更换天线以获取更好的信号。WN517Gp遵循IEEE802.11b/g标准,是一款无线USBLAN卡。然而,有用户反映其芯片为8187L的WN517Gp发热过于严重,不加散热的话可能在短时间内死机。在选择使......
  • Python爬虫知识点(bs/find_all/正则表达式)
    格式输出 BeautifulSoup库  信息提取  正则表达式     ......
  • Python面试题汇总
    1、一行代码实现1-100之和利用sum()函数求和sum(range(1,101))2、如何在一个函数内部修改全局变量利用global将函数内的变量指定成全局变量a=5deffn():globalaa=4fn()print(a)结果是4,不加global,则解决是53、列出5个python标准库sys:提供了不少与操作系统相关......
  • Python学生成绩管理系统
    filename='student.txt'importosdefmenu():print('--------------学生管理系统-----------')print('--------------功能菜单--------------')print('1.录入学生信息')print('2.查找学生信息')print(&......
  • Python网络编程:掌握urllib包的妙用
    在Python的世界里,处理网络请求是日常任务之一。不论是爬取网页数据,还是调用网络API,一个好用的HTTP客户端库是必不可少的。Python标准库中的urllib包就是这样一个强大的工具,它提供了一个简单的界面来与网上资源互动。本文将带你深入了解urllib包,包括它的主要模块,以及如何使用它们完......
  • Python 潮流周刊第 32 期(摘要)
    本周刊由Python猫出品,精心筛选国内外的250+信息源,为你挑选最值得分享的文章、教程、开源项目、软件工具、播客和视频、热门话题等内容。愿景:帮助所有读者精进Python技术,并增长职业和副业的收入。周刊全文:https://pythoncat.top/posts/2023-12-23-weekly以下是本期摘要:......
  • Python函数的使用和示例
    在Python中,函数是一种组织和复用代码的重要方式。函数可以帮助你将代码分解成小的、可管理的部分,并且可以在不同的地方重复使用这些代码。这里是一个简单的Python函数的示例:函数定义与使用定义一个函数:函数以def关键字开始,后跟函数名和圆括号()。圆括号内可以包含参数,也可以为空。......