python基础入门之十八 —— 模块和包

Posted 孤岛蓝鲸

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python基础入门之十八 —— 模块和包相关的知识,希望对你有一定的参考价值。

一、模块

模块能定义函数,类和变量,模块里也能包含可执行代码。

1、 导入模块

  • import 模块名
  • from 模块名 import 功能名
  • from 模块名 import *
# 法1:import 模块
import math
print(math.sqrt(9))
# 法2:from 模块 import 功能1,功能2,……
from math import sqrt
print(sqrt(8))
# 法3:from 模块 import *
from math import *
print(sqrt(8))

2、模块别名

  • import 模块名 as 别名
  • from 模块名 import 功能名as 别名
# 别名1:
import time as t
t.sleep(1)
# 别名2:
from time import sleep as sl
sl(1)

3、制作模块

系统变量:

  • __all__:在使用from 模块/包 import *时,允许导入的模块或功能列表 
  • __name__:运行该模块的文件名:(1)如果在本文件内运行__name__值为__main__
  •                                                          (2)  如果在被其他文件调用时,__name__值为代码所在的文件名

模块:module.py

__all__ = [\'println\',\'test\']

def println(a,b):
    print(a+b)

def test(a,b):
    print(a*b)

if __name__ == \'__main__\':
 println(1,2)
 print(__name__)

调用文件:demo.py

from module import *

println(2,3)  # 5
test(1,2)  # 2

P.s:如果功能名字重复,调用到的是最后定义或导入的功能

 

二 、包

  • 将有联系的模块放在同一个文件夹下,并且在这个文件夹创建一个名字为__init__.py文件,那么这个文件夹就称作为包
  • 新建包mypackage

1、创建包

 

 新建包后,包内部会自动创建__init__.py文件,这个文件控制着包的导入行为

 

2、导包

  • import 包名.模块名
  • from 包 import *

P.s:使用‘from 包 import *’这个导包一定要在__init__.py文件中定义__all__,否则报错

 

 m1.py:

def info():
    print(\'my module 1\')

m2.py:

def info():
    print(\'my module 2\')

demo.py:

# 法一:import 包名.模块名
import bag.m1
bag.m1.info()  # my module 1

# 法二:from 包名 import *
from bag import *
m1.info()  # my module 1
# m2.info() # __all__列表中没有m2,报错

 

以上是关于python基础入门之十八 —— 模块和包的主要内容,如果未能解决你的问题,请参考以下文章

基础入门_Python-模块和包.运维开发中inspect自省模块的最佳实践?

Python基础入门- Python模块和包

Python基础入门学—单例异常模块和包

基础入门_Python-模块和包.深入Celery之应用配置/独立模块配置实践?

基础入门_Python-模块和包.setdefaultencoding前为何要reload(sys)?

基础入门_Python-模块和包.运维开发中内建模块getopt的最佳实践?