Python模块和包

一、模块

Python 模块,是一个Python文件,以.py结尾,包含了Python对象定义和Python语句。
模块能定义函数,类和变量,模块里也能包含可执行的代码。

1. 导入模块

  • import 模块名
  • from 模块名 import 功能名
  • from 模块名 import *
  • import 模块名 as 别名
  • from 模块名 import 功能名 as 别名
  1. import
# 1. 导入模块
import 模块名
import 模块名1, 模块名2
# 2. 调用功能
模块名.功能名()
# 方法一:import 模块名; 模块名.功能名
import math
print(math.sqrt(9)) # 开平方
  1. from…import…:调用该功能时不需要加模块名限定
from 模块名 import 功能1, 功能2, 功能3....

from math import sqrt   # 调用该功能时不需要加模块名限定
print(sqrt(9)) # 开平方
  1. from … import *:调用该功能时不需要加模块名限定
from 模块名 import *

from math import *
print(sqrt(9))

2. as定义别名

# 模块定义别名
import 模块名 as 别名
# 功能定义别名
from 模块名 import 功能 as 别名
import time as t
t.sleep(2)
print("Hello")

from time import sleep as sl
sl(2)
print("World")

注意:定义别名之后,就不能使用原来的模块名或功能名。

3. 制作模块

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

def testA(a, b):
    return a + b

# __name__ 是系统变量,是模块标识符,值是:如果是自身模块值是__main__,否则是当前的模块的名字
if __name__ == "__name__":
     print(testA(1, 2))	# 测试代码
# 制作的模块调用
from my_module1 import testA
print(testA(2, 2))

导入模块注意事项:

  1. 自己的文件名不要和已有模块名重复,否则导致模块功能无法使用。
  2. 使用 from 模块名 import 功能的时候,如果功能名字重复,调用到的是最后定义或导入的功能

应该避免模块名和自定义名字重复

import time

print(time)	# <module 'time' (built-in)>
time = 1

print(time) # 1

4. __all __列表

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

__all__ = ["testA"]

def testA():
    print("testB")

def testB():
    print("testB")

# __name__ 是系统变量,是模块标识符,值是:如果是自身模块值是__main__,否则是当前的模块的名字
if __name__ == "__name__":
    print(testA(1, 2))

测试__all__模块调用

from my_module1 import *

testA()
# 因为testB 函数没有添加到all列表, 只有all列表里面的功能才能导入
testB()	# 会报错

二、包

包将有联系的模块组织在一起,即放到同一文件夹下,并且在这个文件夹创建一个名字为__init__.py
文件,那么这个文件夹就称为包。

1. 制作包

【new】-【Python Package】- 输入包名 - 【ok】- 新建功能模块(有联系的模块)。
注意:新建包后,包内会自动创建__init__.py的文件,这文件控制着包的导入行为。

2. 导入包

  • 方法一
import 包名.模块名
包名.模块名.目标
import mypackage.my_module1
mypackage.my_module1.print_info1()

from mypackage.my_module1 import print_info1
print_info1()
  • 方法二
    注意:必须在__init__.py文件中添加 all = [],控制允许导入的模块列表。
from 包名 import *
模块名.目标
from mypackage import *

my_module1.print_info1()
my_module2.print_info2()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值