我们将完成特定功能的代码块放在一个.py结尾的文件中,这个文件被称为模块。在这个模块中可能包含变量,函数,类等等内容。

当我们从外部需要用到这个模块时,就需要将这个模块导入到我们当前环境。导入方式有以下几种。

import 模块

import 模块.函数

from 模块 import 函数

当被导入模块和,调用模块在同一级目录下是以上方式可以直接使用。当我们项目越来越大时,模块也越来越多,可能将多个不同的功能模块放在多个不同的目录下。我们将多个模块放在一个目录(假定目录名是A)下,A我们就称为包。简言之目录在python模块管理中被称为包。包通常包含模块,和一个__init__.py文件。__init__.py文件可以为空。

python中包的导入方式

from 包.模块 import 函数

from 包 import 模块

以上两种方式都是可行的。当然,在python3版本中,__init__.py 文件无强制要求,当包中无__init__.py文件时,其实也可以进行导包。

示例测试:

目录结构

core下包含三个文件:test.py Modle/module_1.py   module_2.py  ,Modle/__init__.py

module_1.py 添加以下代码

#!coding=utf-8
#Author : littleboss
#Datetime : 2022年6月12日, 0012 10:11
# Project : rain name_1 = "one day" print("module_1 已经被导入") def first0():
print("导包 -> first0函数已经被执行") def first1(a,b):
c = a + b
return c def first2(arc):
print(arc) def first3(arc):
from random import choice
aaa = ["sun","rain","wind"]
return choice(aaa) class Student:
def __init__(self, name, id, sex, age):
""" student dealwith func"""
self.name = name
self.id = id
self.sex = sex
self.age = age def brithday_year(self):
from _datetime import datetime
year = datetime.now().strftime("%Y")
year = int(year) - self.age
return year

module_2.py   添加以下代码

#!coding=utf-8
#Author : littleboss
#Datetime : 2022年6月13日, 0013 15:22
# Project : rain def one_1():
print("module_2") def one_2(ars):
print(ars) print("moudle_2.py 我执行啦")

这样,我们就创建好了一个包。

Modle
     ┠── __init__.py
     ┠── module_1.py
     ┗━━  module_2.py

python包的导入

import core.module_2

#输出:
D:\anaconda3\envs\python3.6\venv\Scripts\python.exe D:/PycharmProjects/rain/test.py
moudle_2.py 我执行啦 Process finished with exit code 0
from core.module_2 import one_2
one_2("python 练习") 执行结果:
D:\anaconda3\envs\python3.6\venv\Scripts\python.exe D:/PycharmProjects/rain/test.py
moudle_2.py 我执行啦
python 练习

__init__.py 添加

#!coding=utf-8
#Author : littleboss
#Datetime : 2022年6月13日, 0013 21:12
# Project : rain print("导入 Modle包")
import core.Modle
print(core.Modle)
print(type(core.Modle)) #输出结果:
#D:\anaconda3\envs\python3.6\venv\Scripts\python.exe D:/PycharmProjects/rain/test.py
导入 Modle包 Process finished with exit code 0

可见导包的本质,实际还是模块。

from core.Modle import module_1
module_1.first0() 输出结果:
导入 Modle包
module_1 已经被导入
导包 -> first0函数已经被执行

python导包的更多相关文章

  1. python导包学习总结

    python初学者,对于导包纠结了不少时间,总结分享,持续前进~ Python导包的两种方法: 1.1  from 包.模块  import 方法名,调用时直接使用方法名() 1.2  from 包. ...

  2. python导包显示No module named XXX问题

    最近用sublime text写python脚本,在导包是一直显示No module named XXX. 问题描述: 首先文件夹的目录结构如下: count.py文件,代码如下: #coding=u ...

  3. python导包语句执行

    今天在做项目中遇到一个问题,在first_page中引用login的登录方法,第一次执行登录可以正常登录,登录成功后,再选择返回主菜单,回到上个页面,再选择登录时报错“login_class isno ...

  4. python导包问题,这一篇就够了

    解决办法: 将项目所在的根目录添加到sys.path中 在入口文件中加入如下代码: import sys import os # 将 项目的根目录添加到sys.path中 BASE_DIR = os. ...

  5. 记一次Python导包经历

    最近由于需要写一个脚本调用另一个文件里面的一个方法,试了很久都导包失败,特此记录一下 问题背景 1)脚本文件为send_reward.py,要调用public_model_func.py里面的一个类方 ...

  6. python导包路径的修改

    1.sys os 模块 import sys import os 2.查看默认的导包路路径: print(sys.path) 3.路径拼接 os.path.join(url, 'apps')) 4.追 ...

  7. python导包一不小心就入坑(常用解决办法)

    常见导包报错: - ImportError:No module named - SystemError: Parent module '' not loaded, cannot perform rel ...

  8. 太酷炫了!!我会Python 导包八种方法,你呢?

    1. 直接 import 人尽皆知的方法,直接导入即可 >>> import os >>> os.getcwd() '/home/wangbm'复制代码 与此类似的 ...

  9. python导包踩过的坑之包名和模块名同名

随机推荐

  1. Python小游戏——外星人入侵(保姆级教程)第一章 01创建Pygame窗口 02创建设置类Setting()

    系列文章目录 第一章:武装飞船 01:创建Pygame窗口以及响应用户输入 02:创建设置类Setting() 一.前期准备 1.语言版本 Python3.9.0 2.编译器 Pycharm2022 ...

  2. 学军中学第三届“图灵杯”趣味网络邀请赛——中级T4.欧拉回路 (图论,哈希)

    题面 补题链接 7 5 6 7 1 2 3 3 13 5 30 50 10 30 70 8 题解 存在欧拉回路的条件是:1. 每个点的度数都是偶数.2. 有边的连通块最多一个. 数据范围是允许我们 n ...

  3. Python条件语句的用法

    python条件语句使用 if 表达式,难度不高,需要注意的是嵌套用法,以及如何设置对应的条件. if 条件判断语句 python 语句是按固定顺序执行的,先执行前面的语句,再执行后面的语句.如果你像 ...

  4. 058_末晨曦Vue技术_过渡 & 动画之过渡的类名

    进入/离开 & 列表过渡 点击打开视频讲解更加详细 概述 Vue 在插入.更新或者移除 DOM 时,提供多种不同方式的应用过渡效果.包括以下工具: 在 CSS 过渡和动画中自动应用 class ...

  5. 第一百篇:JS异步

    好家伙,打工人要打工,博客会更新的没有以前频繁了   芜湖,一百篇了,这篇写一个比较难的异步(其实并不难理解,主要是为promise铺垫)   老样子,先补点基础: 1.进程 来吧,新华字典    大 ...

  6. 2021年3月-第02阶段-前端基础-Flex 伸缩布局-移动WEB开发_flex布局

    移动web开发--flex布局 1.0 传统布局和flex布局对比 1.1 传统布局 兼容性好 布局繁琐 局限性,不能再移动端很好的布局 1.2 flex布局 操作方便,布局极其简单,移动端使用比较广 ...

  7. linux使用iptables屏蔽ip地址

    一.iptables命令介绍: netfilter/iptables(简称为iptables)组成Linux平台下的包过滤防火墙,与大多数的Linux软件一样,这个包过滤防火墙是免费的,在安装系统的时 ...

  8. 关于使用kuboard安装其自带的监控应用的注意事项

    在安装过程中若想监控kube-controller-manager和kube-scheduler,需要按步骤中的如下说明操作 在这里,所有master节点的这俩文件都需要修改,不用apply,等一分钟 ...

  9. 使用 Auditbeat 模块监控 shell 命令

    使用 Auditbeat 模块监控 shell 命令 Auditbeat Audited 模块可以用来监控所有用户在系统上执行的 shell 命令.在终端用户偶尔才会登录的服务器上,通常需要进行监控. ...

  10. Docker — 从入门到实践(v1.2.0)

    在线地址:https://www.bookstack.cn/read/docker_practice-1.2.0 pdf文件下载地址:https://files.cnblogs.com/files/s ...