python的模块和包是什么(python中模块与包)

python的模块和包是什么(python中模块与包)(1)

模块

当代码量很大的时候,我们不可能把所有的代码写在一个文件中,所以这时候就需要分多个.py文件进行写代码。一个.py文件就是一个模块。如文件名为main.py,那么模块名就为main。即可以把模块理解为文件。像之前的 import random,random就是一个文件

模块的使用

1. from 模块名 import xx

从指定的模块中导入指定的东西。如下在main文件中导入function模块中的函数

function.py

def add(a , b): c = a b print(c) def jian(a,b): c = a b print(c) print("ok")

main.py

将function模块中的add,jian函数导入,默认其他的输出语句也会导进来

from function import add,jian add(2,3) jian(5,2)

python的模块和包是什么(python中模块与包)(2)

2. from 模块名 import *

从指定的模块中导入所有的东西。但是不推荐使用,容易导致函数不知道来自哪个模块

main.py

from function import * add(2,3) jian(5,2)

python的模块和包是什么(python中模块与包)(3)

3. import 模块名

或者可以直接先导入模块,然后在需要调用模块中的函数的时候,模块名.函数名,即可

function.py

def add(a , b): c = a b print(c) def jian(a,b): c = a b print(c) print("ok")

main.py

import function function.add(2,3)

python的模块和包是什么(python中模块与包)(4)

if __name__ == "__main__":

在上面介绍的三种导入模块的方法中我们知道,导入的时候不仅会导入指定的函数,还会将其他的print等一些语句导入进去,这显然不会我们想要的

function.py

def add(a , b): c = a b print(c) def jian(a,b): c = a b print(c) print("ok") add(4,4)

main.py

from function import add add(5,6)

本来只想导入add这个函数,然后把其他的无关紧要的测试语句要导入进来了

python的模块和包是什么(python中模块与包)(5)

为了避免这些测试代码在模块被导入后执行,可以利用__name__属性。

function.py

我们将一些测试语句放在__name__ == '__main__'下面,导包的时候就不会将这些无关的数据导入进去

def add(a , b): c = a b print(c) def jian(a,b): c = a b print(c) if __name__ == '__main__': print("ok") add(4,4)

main.py

from function import add add(5,6)

python的模块和包是什么(python中模块与包)(6)

那什么是包了?多个相同功能的模块,放在同一个文件夹下,并且拥有__init__.py 这个文件,那么这个文件夹就叫包。

__init__.py

当倒入包的时候,包中的__init__.py中的内容会自动执行,无需手动调用

package包内容如下

python的模块和包是什么(python中模块与包)(7)

test.py

test.py与package文件夹处于同一级目录,导入包中的read, write模块中的函数,此时会自动导入__init__.py中的内容

from package.read import re #从包中的模块中导入函数 from package.write import wr re() wr()

__inti__.py中的文件内容

print("没有主动调用也会自动调用")

python的模块和包是什么(python中模块与包)(8)

原文链接:https://blog.csdn.net/qq_44159028/article/details/120415294

,

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com

    分享
    投诉
    首页