python学习笔记-模块和包

2020-09-07  本文已影响0人  MR_詹

模块

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

模块导入方式

1、 import 模块名
2、 from 模块名 import 功能名1,功能名2....
3、 from 模块名 import *
4、import 模块名 as 别名
5、from 模块名 import 功能名 as 别名

例子:计算9的开平方

# 导入模块
import math
#调用模块功能
# 通过`模块名.功能`的格式调用功能
print(math.sqrt(9))


# 导入math模块的指定功能 sqrt
from math import sqrt
#调用sqrt可以直接调用,不需要通过模块名
print(sqrt(9))


#导入math模块所有的代码功能
from math import *
# 可以直接调用模块功能
print(sqrt(9))

as 定义别名

# 模块定义别名
import 模块名 as 别名

# 功能定义别名
from 模块名 import 功能 as 别名

例如:

# 导入time模块,并将设置别名为 tt
# 一旦模块设置了别名,就不能通过模块名调用功能
import time as tt
# 睡眠2秒钟,再打印hello
tt.sleep(2)
print('hello')


# 功能别名
from time import sleep as sl

sl(2)
print('hello')

制作模块

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

例子:
定义个rw_sum.py文件,并定义to_sum()函数

1、创建模块(新建一个.py文件)
创建一个rw_sum.py文件

2、定义to_sum()功能
def to_sum(a,b):
    print(a + b)

3、测试模块
# __name__ 是系统变量,是模块的标识符(如果是自身模块值是__main___,否则是当前的模块名字)
# 如果py代码是在当前自己py文件中运行,则__name__等于__main__
# 否则__name__的值就等于这个py文件名
if __name__ == '__main__':
    to_sum(1, 2)

4、调用模块
import rw_sum
    rw_sum.to_sum(1,2)


模块定位顺序

当导入一个模块,python解析器对模块位置的搜索顺序是:
1、当前目录
2、如果不在当前目录,Python则搜索在shell变量PYTHONPATH的每个目录
3、如果都找不到,Python会查看默认路径。

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

all

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

例如:
rw_sum.py模块代码:

__alloc__ = ['to_sum']

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

def to_harf(a):
    print(a/2)

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

制作包

[NEW] -- [Python Package]-- 输入包名--[OK] -- 新建功能模块(有联系的模块)
注意:新建包后,包内部会自动创建__init__.py文件,这个文件控制着`包的导入行为`

导入包

方法一:
import 包名.模块名
包命.模块名.目标功能()


方法二:
必须在__init__.py文件中添加__all__=[],控制允许导入的模块列表

from 包名 import *
  模块名.目标功能()
上一篇 下一篇

猜你喜欢

热点阅读