模块和包——Python

  • 了解模块
  • 导入模块
  • 制作模块
  • ——all——
  • 包的使用方法

一、模块

Python模块(Module),是一个Python文件,以.py结尾,包含了Python对象定义和Python语句。模块能定义函数,类和变量,模块里也能包含可执行的代码
在这里插入图片描述
导入模块的方式

  • import 模块名
  • from 模块名 import 功能名
  • from 模块名 import *
  • important 模块名 as 别名
  • from 模块名 import 功能名 as 别名
import math
print(math.sqrt(9))

from 模块名 import 功能1、功能2、功能3·····
from math import sqrt
print(sqrt(9))

from math import *
print(sqrt(9))

import time as t
t.sleep(3)
print('hello')

from time import sleep as sl
sl(2)
print('world')

制作模块*
在Python中,每个Python文件都可以作为一个模块,模块的名字就是文件的名字。自定义模块名必须要符合标识符命名规则

TestName.py
def test(a,b):
    print(a+b)

#只在当前文件中调用该函数,其他导入的文件内不符合该条件,则不执行test函数调用
#name是一个系统变量,是每一个Python文件的标识符,如果name的使用位置是在自身里边,
# 那么它的的值就是__main__。如果不是自身调用,则是调用的模块名
if __name__=='__main__':
    test(1,1)

myfirstPython.py
import TestName
TestName.test(2,2)

模块定位顺序
当导入一个模块,Python解释器对模块位置的搜索顺序是:

  • 当前目录
  • 如果不在当前目录,Python则搜索在shell变量PYTHONPATH下的目录
  • 如果都找不到,Python会查看默认路径。模块搜索路径存储在system模块的sys.path变量中。变量里包含当前目录,PYTHONPATH和由安装过程决定的默认目录
  • 注意:
    自己的文件名不要和已有模块名重复,否则导致模块功能无法使用
    使用from模块名和import功能的时候,如果功能名字重复,调用到的是最后定义或导入的功能

——all——
如果一个模块文件中有—all—变量,当使用from xxx import *导入时,只能导入这个列表中的元素

TestName.py
__all__=['testA']
#方括号里的testA,指的是testA函数,调用该模块时,只能调用testA
def testA():
    print('testA')
def testB():
    print('testB')

myfirstPython.py
from TestName import *
testA()
testB()
#到testB执行时会进行报错

包将有联系的模块组织在一起,即放到同一个文件夹下,并且在这个文件夹创建一个名字为——init——.py文件,那么这个文件夹就称为包
制作包
[New]—[Python Package]—输入包名—[ok]—新建功能模块(有联系的模块)

注意:新建包后,包内部会自动创建——init——.py文件,这个文件控制着包的导入行为
导入包
法一

import 包名.模块名
包名.模块名.目标

法二
必须在——init——.py文件中添加——all——=[ ],控制允许导入的模块列表

__all__ =['Test1']
发布了61 篇原创文章 · 获赞 18 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/weixin_43717681/article/details/104174010