python 包/模块的概念、导入与使用

模块

  • 一个模块就是一个包含python代码的文件,后缀名是.py即可
  • why 使用模块
    • 程序太大,编写维护不方便,需要拆分
    • 可以增加代码重复利用的方式
    • 当做命名空间使用,避免命名冲突
  • how to define 模块
    • 最好在模块中编写以下内容:
      • 函数(单一功能)
      • 类(相似功能的组合,或者类似业务模块)
      • 测试代码
  • how to 使用模块

模块直接导入

import module_name
module_name.function.name
module_name.class_name
	- 若模块名称直接以数字开头,需要借助importlib
 import importlib
   #导入了一个叫01的模块并把导入模块赋值给了tuling
   tuling = importlib.import_module("01")   

import 模块 as 别名
- from module_name import func_name,class_name
#有选择性地导入,导入后可直接使用(不需要加上模块名,即没有前缀)
- from module_name import*
#全部导入,也可以直接使用不需要前缀(但会出现命名污染的问题,不推荐使用)

避免模块代码被导入时自动使用
if name == “main”,建议以次作为所有程序的入口

模块的搜索路径和存储

  • what is 模块的搜索路径:加载模块时,系统会在哪些地方寻找此模块
  • 系统默认的模块搜索路径
import sys  
sys.path
  • 添加搜索路径
    sys.path.append(dir)
  • 模块的加载顺序
    1.先搜索内存中已经加载好的模块
    2.搜索python的内置模块
    3.搜索sys.path路径

  • 包是一种组织管理代码的方式,包里面存放的是模块
  • 用于将模块组织在一起的文件夹就是包
  • 自定义包的结构
    /—包
    /—/---init.py 包的标志文件
    /—/---模块1
    /—/---模块2
    /—/---子包(子文件夹)
    /—/---/—init.py
    /—/---/—子包模块1
    /—/---/—子包模块2
  • 包的导入操作
    • import package_name:直接导入一个包,可以使用__init__.py中的内容
package_name.func_name
package_name.class_name.func_name()
  • import package_name as 别名
  • import package.module as 别名
  • from package import module1,module2,… 此种导入方法不执行__init__的内容
  • from package import*
    • 导入当前包的’init.py’文件中所有的函数和类
    • 使用方法
 func_name()
    class_name.func_name()
    class_name.var
  • from package.module import*
    - 导入包中指定模块的所有内容
    - 使用方法
    func_name()
    class_name.func_name()

__all__的用法

  • 在使用from package import* 时,*可以导入的内容
  • init.py中如果文件为空,或者没有__all__,那么只可以把__init__中的内容导入
  • init.py中如果设置了__all__的值,则按照__all__指定的子包或者模块进行导入,就不会再载入__init__中的内容
  • all = [‘module1’, ‘module2’,‘package1’,…]

命名空间

  • 用于区分不同位置不同功能但名称相同的函数/变量的一个特定前缀,作用是防止命名冲突
setName()
Student.setName()
Dog.setName()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值