【python | linux11】一篇文章让你完全理解什么是模块引用

简介: 在python中,一个.py文件就称之为一个模块(module)。最大的好处是大大提高了代码的可维护性。其次,编写代码不必从零开始。当一个模块编写完毕,就可以被其他地方引用。我们在编写程序的时候,也常常引用其他模块,包括Python内置的模块和来自第三方模块............

🍁作者简介:🏅云计算领域优质创作者🏅新星计划第三季python赛道TOP1🏅 阿里云ACE认证高级工程师🏅

✒️个人主页:小鹏linux

💊个人社区:小鹏linux(个人社区)欢迎您的加入!

目录

1.模块介绍

2.使用模块的好处

3.查看模块位置

4.模块的意义

5.模块的引用

5.1模块名.函数名

5.2引入方式的改变

5.3导入某个模块的函数

5.4系统加载模块位置(加载顺序从上到下)

5.5在任何位置识别

5.6 all变量(_ _all_ _)

👑👑👑结束语👑👑👑


1.模块介绍

在计算机程序的开发过程中,随着程序代码越写越多,在一个文件里代码会越来越长,越来越不容易维护,为了编写可维护的代码,我们把很多函数分组,分别放到不同的文件里,这样,每个文件包含的代码就相对较少,很多程序语言都采用这种组织代码的方式。在python中,一个.py文件就称之为一个模块(module)

2.使用模块的好处

最大的好处是大大提高了代码的可维护性。其次,编写代码不必从零开始。当一个模块编写完毕,就可以被其他地方引用。我们在编写程序的时候,也常常引用其他模块,包括Python内置的模块和来自第三方模块

3.查看模块位置

模块名。__file__

In [1]: import os

In [2]: os.__file__                #查看os模块所在位置

Out[2]: '/usr/local/lib/python3.7/os.py'

4.模块的意义

模块好比是工具包,想要使用这个工具包中的工具(就好比函数),就需要导入这个模块。
[root@localhost ~]# vim sendmsg.py
def test1():
    print("----sendmsg---test1----")
def test2():
    print("----sendmsg---test2----")

image.gif

[root@localhost ~]# vim main.py
import sendmsg
#使用模块
sendmsg.test1()
sendmsg.test2()

image.gif

[root@localhost ~]# python3 main.py
----sendmsg---test1----
----sendmsg---test2----

image.gif

5.模块的引用

5.1模块名.函数名

In [1]: import math  
In [2]: math.sqrt(9)
Out[2]: 3.0
In [7]: import sendmsg
In [8]: sendmsg.test1()
----sendmsg---test1----

image.gif

5.2引入方式的改变

有时候我们只需要用到模块中的某个函数,只需要引入该函数即可,此时可以用下面的方法实现:

from 模块名 import 函数名1,函数名2

[root@localhost ~]# vim sendmsg.py
def test1():
    print("----sendmsg---test1----")
def test2():
    print("----sendmsg---test2----")

image.gif

[root@localhost ~]# vim main.py
from sendmsg import test1
from sendmsg import test2   #或者写from sendmsg import test1,test2 再或者用*代替test,test2
test1()
test2()

image.gif

[root@localhost ~]# python3 main.py
----sendmsg---test1----
----sendmsg---test2----

image.gif

5.3导入某个模块的函数

语法如下:

from modname import name1[,name2[, ...naneN]]

使用as起别名

In [1]: import random
In [2]: random.randint(0,10)
Out[2]: 5

image.gif

In [4]: import random as r
In [5]: r.randint(0,10)
Out[5]: 7

image.gif

5.4系统加载模块位置(加载顺序从上到下)

In [10]: import sys
In [11]: sys.path
Out[11]:
['/usr/local/bin',
 '/usr/local/lib/python37.zip',
 '/usr/local/lib/python3.7',
 '/usr/local/lib/python3.7/lib-dynload',
 '',
 '/usr/local/lib/python3.7/site-packages',
 '/usr/local/lib/python3.7/site-packages/IPython/extensions',
 '/root/.ipython']

image.gif

5.5在任何位置识别

[root@localhost ~]# vim sendmsg.py

#全局变量

name="张三"

def test1():

        print("----sendmsg---test1----")

def test2():

        print("----sendmsg---test2----")

class Person(object):

        #类属性

        age=18

        __address="中国"

        def __init__(self,name):

                self.name=name

        def eat(self):

                print("%s在吃东西"%self.name)

if __name__=='__main__':

        print(name)

        test1()

        test2()

        p=Person("老王")

        print(p.age)

        print(p.name)

        p.eat()

[root@localhost ~]# python3 sendmsg.py

张三

----sendmsg---test1----

----sendmsg---test2----

18

老王

老王在吃东西

[root@localhost ~]# cp sendmsg.py  /usr/local/lib/python3.7/site-packages

[root@localhost ~]# cd /

[root@localhost ~]# ipython

In [1]: import sendmsg

In [2]: sendmsg.name

Out[2]: '张三'

In [3]: sendmsg.test1

Out[3]: <function sendmsg.test1()>

In [4]: sendmsg.test1()

----sendmsg---test1----

In [5]: p=sendmsg.Person("老李")

In [6]: p.eat()

老李在吃东西

In [7]: sendmsg.__file__

Out[7]: '/usr/local/lib/python3.7/site-packages/sendmsg.py'

5.6 all变量(_ _all_ _)

如果一个文件中有_ _all_ _变量,那么也就意味着这个变量中的元素,会被from xxx import *时导入

当有些功能你不想让别人用的时候就可以使用这种方式。

[root@localhost site-packages]# rm -rf ./sendmsg.py

[root@localhost site-packages]# cd ~

[root@localhost ~]# vim sendmsg.py

__all__=['name','test1','Person']

#全局变量

name="张三"

def test1():

        print("----sendmsg---test1----")

def test2():

        print("----sendmsg---test2----")

class Person(object):

        #类属性

        age=18

        __address="中国"

        def __init__(self,name):

                self.name=name

        def eat(self):

                print("%s在吃东西"%self.name)

if __name__=='__main__':

        print(name)

        test1()

        test2()

        p=Person("老王")

        print(p.age)

        print(p.name)

        p.eat()

[root@localhost ~]# vim main.py

from sendmsg import *

print(name)

test1()

p = Person("李四")

p.eat()

test2()

[root@localhost ~]# python3 main.py

张三

----sendmsg---test1----

李四在吃东西

In [1]: from sendmsg import *

In [2]: test1()

----sendmsg---test1----

In [3]: test2()

---------------------------------------------------------------------------

NameError                                 Traceback (most recent call last)

<ipython-input-3-7b315abe3193> in <module>

----> 1 test2()

NameError: name 'test2' is not defined

In [4]: import sendmsg

In [5]: sendmsg.test2()

----sendmsg---test2----

👑👑👑结束语👑👑👑

image.gif

目录
相关文章
|
2天前
|
测试技术 Python
手动解决Python模块和包依赖冲突的具体步骤是什么?
需要注意的是,手动解决依赖冲突可能需要一定的时间和经验,并且需要谨慎操作,避免引入新的问题。在实际操作中,还可以结合使用其他方法,如虚拟环境等,来更好地管理和解决依赖冲突😉。
|
12天前
|
Python
在Python中,可以使用内置的`re`模块来处理正则表达式
在Python中,可以使用内置的`re`模块来处理正则表达式
33 5
|
25天前
|
缓存 监控 Linux
Python 实时获取Linux服务器信息
Python 实时获取Linux服务器信息
|
22天前
|
Java 程序员 开发者
Python的gc模块
Python的gc模块
|
25天前
|
数据采集 Web App开发 JavaScript
python-selenium模块详解!!!
Selenium 是一个强大的自动化测试工具,支持 Python 调用浏览器进行网页抓取。本文介绍了 Selenium 的安装、基本使用、元素定位、高级操作等内容。主要内容包括:发送请求、加载网页、元素定位、处理 Cookie、无头浏览器设置、页面等待、窗口和 iframe 切换等。通过示例代码帮助读者快速掌握 Selenium 的核心功能。
73 5
|
24天前
|
Python
SciPy 教程 之 SciPy 模块列表 16
SciPy教程之SciPy模块列表16 - 单位类型。常量模块包含多种单位,如公制、质量、角度、时间、长度、压强、体积、速度、温度、能量、功率和力学单位。示例代码展示了力学单位的使用,如牛顿、磅力和千克力等。
17 0
|
25天前
|
JavaScript Python
SciPy 教程 之 SciPy 模块列表 15
SciPy 教程之 SciPy 模块列表 15 - 功率单位。常量模块包含多种单位,如公制、质量、时间等。功率单位中,1 瓦特定义为 1 焦耳/秒,表示每秒转换或耗散的能量速率。示例代码展示了如何使用 `constants` 模块获取马力值(745.6998715822701)。
16 0
|
25天前
|
JavaScript Python
SciPy 教程 之 SciPy 模块列表 15
SciPy教程之SciPy模块列表15:单位类型。常量模块包含多种单位,如公制、质量、角度、时间、长度、压强、体积、速度、温度、能量、功率和力学单位。功率单位以瓦特(W)表示,1W=1J/s。示例代码展示了如何使用`constants`模块获取马力(hp)的值,结果为745.6998715822701。
16 0
|
4天前
|
存储 数据挖掘 开发者
Python编程入门:从零到英雄
在这篇文章中,我们将一起踏上Python编程的奇幻之旅。无论你是编程新手,还是希望拓展技能的开发者,本教程都将为你提供一条清晰的道路,引导你从基础语法走向实际应用。通过精心设计的代码示例和练习,你将学会如何用Python解决实际问题,并准备好迎接更复杂的编程挑战。让我们一起探索这个强大的语言,开启你的编程生涯吧!
|
10天前
|
机器学习/深度学习 人工智能 TensorFlow
人工智能浪潮下的自我修养:从Python编程入门到深度学习实践
【10月更文挑战第39天】本文旨在为初学者提供一条清晰的道路,从Python基础语法的掌握到深度学习领域的探索。我们将通过简明扼要的语言和实际代码示例,引导读者逐步构建起对人工智能技术的理解和应用能力。文章不仅涵盖Python编程的基础,还将深入探讨深度学习的核心概念、工具和实战技巧,帮助读者在AI的浪潮中找到自己的位置。
下一篇
无影云桌面