python基础-模块和包

1.什么是python的包

  包就是一个文件夹,里面放着一个个py文件或子包;

  在包中可以被调用的一个个py文件,我们叫做模块;

  python基础-模块和包

  如上,test就是一个包、two.py就是test下的一个模块,child是子包,结构和test包一样;

  包的身份证

    可以看到test下还有一个__init__.py命名的文件,是python包中必须存在的文件,是和普通文件夹的区分标志、类似包的身份证;

 

2.包的导入import

  import package 

  一般用于两种场景,拿到某包下__init__.py文件中中的功能或同级模块下的功能;

  python基础-模块和包

  如上结构,在three.py文件中可以通过import导入test/__init__.py中的方法;

# test/__init__.py

def test_init_func():
    print('test_init_func')
# test2/three.py

import test
test.test_init_func()  # test_init_func

  还可以在three.py中导入同级模块one.py中的功能;

# test2/one.py

def test2_one_func():
    print('test2_one_func')
# test2/three.py

import one
one.test2_one_func()  # test2_one_func

 

3.模块的导入from .. import ..

  通过某个包找到对应的模块;from package import module

  3.1 导入同级包中的某模块

    eg:在main.py中导入test/two.py模块

    python基础-模块和包

# test/two.py

def test_two_fun():
    print('test_two_func')
# main.py

# 方式一 仍然使用import
import test.two
test.two.test_two_fun()  # test_two_func
# main.py

# 方式二 使用from...import...

from test import two
two.test_two_fun()  # test_two_func
# main.py

# 也可以直接导入方法
from test.two import test_two_fun
test_two_fun()  # test_two_func

  此时要导入模块中的类时,与方法的导入类似,导入后实例化一下即可;

# test/two.py

class Two(object):

    @staticmethod
    def test_two_fun():
        print('test_two_func')
# main.py

from test import two
t = two.Two()
t.test_two_fun()  # test_two_func
# 也可以直接导入类
from test.two import Two

t = Two()
t.test_two_fun()  # test_two_func

# python的模块导入形式比较灵活,按需使用即可

  3.2 导入同级包中子包某模块

    eg: 在main.py中导入test/test2/one.py模块中的方法;

    python基础-模块和包

# test/test2/one.py

def test_test2_one_func():
    print('打印test_test2_one_func')
# main.py

from test.test2 import one
one.test_test2_one_func()  # 打印test_test2_one_func
# main.py

# 也可以直接导入函数

from test.test2.one import test_test2_one_func
test_test2_one_func()  # 打印test_test2_one_func

  可以优化下上面from test.test2.one import 的写法,在test/__init__.py中提前导入子包;

# test/__init__.py

from .test2.one import test_test2_one_func  # init文件中导入同级子包中方法,需使用 .子包名 的方式
# main.py

# 此时可以直接用import方式导入,书写上方便的多
import test
test.test_test2_one_func()  # 打印test_test2_one_func

  3.3 导入同级包中不同子包各自模块

    python基础-模块和包

    此时main.py中要同时导入两个one.py模块;

# test/test2/one.py

def test_test2_one_func():
    print('打印test_test2_one_func')
# test/test3/one.py


def test_test3_one_func():
    print('打印test_test3_one_func')
# main.py

from test.test2 import one as test2_one
from test.test3 import one as test3_one  # 有模块名重复时,为了区分,可以使用as重命名下

test2_one.test_test2_one_func()
test3_one.test_test3_one_func()
'''
打印test_test2_one_func
打印test_test3_one_func
'''

  同样也可以借助init文件,简写调用方式;

# test/__init__.py

from .test2.one import test_test2_one_func
from .test3.one import test_test3_one_func
# main.py

from test import test_test2_one_func, test_test3_one_func  # 同一模块导入多个方法时,可以合并到一行写
test_test2_one_func()
test_test3_one_func()
'''
打印test_test2_one_func
打印test_test3_one_func
'''

 

总结

  python基础-模块和包

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python基础-模块和包 - Python技术站

(0)
上一篇 2023年4月2日
下一篇 2023年4月2日

相关文章

  • python基础-函数

    1.函数定义   函数就是将完成一件事情的步骤封装在一起并得到最终的结果;   函数名代表了这个函数要做的事情;   函数体是实现函数功能的流程;   添加一个函数也被叫做实现了一个方法或功能;   函数可以帮助我们重复使用一些操作步骤;   2.def   通过关键字def定义函数;   def  name(args…):     print(”) …

    2023年4月2日
    00
  • python基础-较复杂数据类型预览

    1.初识列表   列表就是队列;   列表是一种有序的,且内容可重复的数据类型;   用list代表列表,也可以用list()定义一个列表,同时定义列表可以直接使用 [ ];   python中列表是一个无限制长度的数据结构;(但为了响应速度,也应避免列表中数据过大);   列表中可以存储各种数据类型,数字、字符串、布尔型、None、另一个列表等。     …

    2023年4月2日
    00
  • python基础–基本概念

    1.脚本的文件格式   脚本名.py         eg: hello.py   2.脚本结构   大概三部分,脚本头+导入部分+业务模块         每一块都是非必须的,按需填写即可;      为了书写规范,一般脚本头和导入部分中间空一行,导入部分和业务部分中间空两行;   3.头部注释   写在python脚本第一行,用#开头表示的信息就是头注释…

    2023年4月2日
    00
  • python基础-常用内置包

      内置包是python自带的一些功能模块,有需求时可以在自己文件中直接导入使用。   1.datetime包   python中的时间包,可以在业务开发中辅助我们处理时间信息; # datetime可以获取当前时间 from datetime import datetime re = datetime.now() print(re) # 2022-12-0…

    2023年4月2日
    00
  • python基础-数据类型间的转换

    数据类型转换:将自身数据类型转化成新的数据类型,并拥有新数据类型相关操作的过程; 为方便更好的帮助处理业务,将数据变更为更适合业务场景的类型; a = ‘1’,  此时想使用数字的数学操作,就需要先将字符串转化为数字类型;   1.数字与字符串间的转换 # 字符串转换成整数 a = ’34’ b = int(a) print(b) # 34 # 此时字符串内…

    2023年4月2日
    00
  • python基础-异常处理

    1.异常与异常处理   异常就是程序中的错误,正常情况下程序是自上而下逐行执行的,当遇到异常时,就会报错退出执行;   异常处理就是在程序中可能出错的地方进行提前预捕获,并将异常部分的程序进行修正使得程序正常执行。   2.异常的语法   利用try … except … 关键字 # 以字符串的upper方法为例 def new_upper(str_…

    2023年4月2日
    00
  • python基础-面向对象

    1.面向对象   面向对象编程是在面向过程编程的基础上发展来的,它比面向过程编程具有更强的灵活性和扩展性,所以可以先了解下什么是面向过程编程:   面向过程编程的核心是过程,就是分析出实现需求所需要的步骤,通过函数一步一步实现这些步骤,接着依次调用即可,再简单理解就是程序   从上到下一步步执行,从头到尾的解决问题;   而面向对象编程是把构成事物的整个需求…

    2023年4月2日
    00
  • python基础-集合的常用操作

    {} 集合是一种无序不可重复的序列;集合常用于对两个列表的交并差处理; 集合没有任何获取元素的方法,只用作处理列表或元组的临时数据类型,不适合数据的存储和传输。 1.集合的创建   利用内置函数set() 或 { }创建; set_test = set() # 创建空集合 print(set_test) # set() print(type(set_test…

    2023年4月2日
    00
合作推广
合作推广
分享本页
返回顶部