python模块及包自定义和导入

1. 导入模块

1.1 导入模块的三种方式

  • import 模块

  • from 模块 import 功能名

  • from 模块 import *

  • 代码解释

import math
print(math.sqrt(9))

from math import sqrt

from math import *
print(sqrt(9))

1.2 导入模块时设别名

  • import 模块 as 别名
  • from 模块 import 功能名 as 别名

定义别名后原名称就不能使用了

import math as mm
# print(math.sqrt(9))  定义别名后原名称就不能使用了
print(mm.sqrt(9))

from math import sqrt as st
print(st(9))

2. 自定义模块

2.1 写模块

模块定义 :一个模块就是一个.py文件,里面的函数就是 功能 ,

为什么需要模块: 对于经常需要调用的功能代码独立出来,而无需每次将功能代码写在代码中

2.2 测试模块

对于写好的模块需要测试,对于内部测试的代码可以通过if __name__ == '__main__'隐藏在模块中,而避免调用模块时使用测试代码

  • __name__在模块内测试时表示'__main__'
  • __name__在模块被调用测试时表示模块名
def mutipliy(a, b):
    print(a + b)

if __name__ == '__main__':   # 内部测试代码
    mutipliy(1, 1)

2.3 不同模块同名函数同时调用

调用最后一个同名函数

当通过from 模块 improt *

# 模块1代码
def my_test(a, b):
    print(a + b)

# 模块2代码
def my_test(a, b):
    print(a - b)
   
# 导入模块和调用功能代码
from my_module1 import my_test
from my_module2 import my_test

# my_test函数是模块2中的函数
my_test(1, 1)

引入模块的函数和自定义的函数同名时,仍调用最后一个函数

from math import sqrt

def sqrt():
    print('haha')

sqrt()   # 输出haha

3. 模块定位顺序

  1. 当前目录
  2. 如果不在当前目录,Python则搜索在shell变量PYTHONPATH下的每个目录。
  3. 如果都找不到,Python会察看默认路径。

4. __all__筛选模块中功能

  • 定义

    当使用from 模块 import *时,不能为import 模块

    __all__列表中包含的功能名称才能使用

  • 语法
    __all__ = ['模块名','模块名']

  • 代码解释

# 模块mathh中
__all__ = ['test1']   # 筛选模块

def test1():
    ...
def test2():
    ...

# 调用模块
from mathh import *

test1()
test2() # 调用出错 NameError: name 'test2' is not defined

5. 包

  • 方法一:

    • 导包:import 包名
    • 调用:包名.模块名.功能名
  • 方法二:

    • 先在包的__init__.py__all__列表中添加模块名
    • 导包:from 包名 import *
    • 调包:模块名.功能名
  • 代码解释

# 方法一: import 包名
# import my_package.my_module1
# my_package.my_module1.test()


# 方法二:from 包名 import *
# 首先需要在__init__.py中_all__列表中添加模块名
from my_package import *
my_module1.test()

6. 总结

  • 模块

    • import 模块
    • from 模块 import 功能名
    • from 模块 import *
  • 同名模块、函数注意事项

    • import 包名
    • from 包名 import *
  • __all__ = []筛选

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值