python导包
我们将完成特定功能的代码块放在一个.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导包的更多相关文章
- python导包学习总结
python初学者,对于导包纠结了不少时间,总结分享,持续前进~ Python导包的两种方法: 1.1 from 包.模块 import 方法名,调用时直接使用方法名() 1.2 from 包. ...
- python导包显示No module named XXX问题
最近用sublime text写python脚本,在导包是一直显示No module named XXX. 问题描述: 首先文件夹的目录结构如下: count.py文件,代码如下: #coding=u ...
- python导包语句执行
今天在做项目中遇到一个问题,在first_page中引用login的登录方法,第一次执行登录可以正常登录,登录成功后,再选择返回主菜单,回到上个页面,再选择登录时报错“login_class isno ...
- python导包问题,这一篇就够了
解决办法: 将项目所在的根目录添加到sys.path中 在入口文件中加入如下代码: import sys import os # 将 项目的根目录添加到sys.path中 BASE_DIR = os. ...
- 记一次Python导包经历
最近由于需要写一个脚本调用另一个文件里面的一个方法,试了很久都导包失败,特此记录一下 问题背景 1)脚本文件为send_reward.py,要调用public_model_func.py里面的一个类方 ...
- python导包路径的修改
1.sys os 模块 import sys import os 2.查看默认的导包路路径: print(sys.path) 3.路径拼接 os.path.join(url, 'apps')) 4.追 ...
- python导包一不小心就入坑(常用解决办法)
常见导包报错: - ImportError:No module named - SystemError: Parent module '' not loaded, cannot perform rel ...
- 太酷炫了!!我会Python 导包八种方法,你呢?
1. 直接 import 人尽皆知的方法,直接导入即可 >>> import os >>> os.getcwd() '/home/wangbm'复制代码 与此类似的 ...
- python导包踩过的坑之包名和模块名同名
随机推荐
- Hi3516开发笔记(十):Qt从VPSS中获取通道图像数据存储为jpg文件
前言 上一篇已经将himpp套入qt的基础上进行开发.那么qt中拿到frame则是很关键的交互,这是qt与海思可能编解码交叉开发的关键步骤. 受限制 因为直接配置sample的vi比较麻烦 ...
- MyBatis-Plus 配置文件
MyBatis-Plus在实际工作中常用到的配置,供自己和大家查阅学习. mybatis-plus: mapperPackage: com.**.**.mapper # 对应的 XML 文件位置 ma ...
- linux设置系统环境变量的天坑
在设置系统环境变量,也就是 .bash_profile 或者 /etc/proflie 或者 .bashrc 中把path写错或者是把设置系统环境变量的格式写错! 会 导致 系统无法进入.登录无限循环 ...
- Bert不完全手册7. 为Bert注入知识的力量 Baidu-ERNIE & THU-ERNIE & KBert
借着ACL2022一篇知识增强Tutorial的东风,我们来聊聊如何在预训练模型中融入知识.Tutorial分别针对NLU和NLG方向对一些经典方案进行了分类汇总,感兴趣的可以去细看下.这一章我们只针 ...
- Usmjeri(COCI2017.2)题解
题意 给一棵N个节点的树,编号从1到N,再给定m对点(u,v),你要将树上的每条无向边变为有向边,使得给定的点对都满足u能到达v或v能到达u.问有多少种不同的方案,答案对(1e9+7)求余. 1 ≤ ...
- Docker问题:"docker build" requires exactly 1 argument.
今天在搭建Docker私有仓库的时候.提示错误:"docker build" requires exactly 1 argument. 原因是因为(少了一个 '.' , '.' 代 ...
- 在Apache Cassandra数据库软件中报告高严重性RCE安全漏洞
研究人员披露了ApacheCassandra一个现已修补的高严重性安全漏洞的细节,如果这个漏洞得不到解决,可能会被滥用来获取受影响安装的远程代码执行(RCE). DevOps公司JFrog的安全研究员 ...
- KingbaseES 自增列三种方式
KingbaseES中3种自增长类型sequence,serial,identity的区别: 对象 显示插入 显示插入后更新最大值 清空表后是否重置 是否跟事务一起回滚 多对象共享 支持重置 出现错误 ...
- C语言输入输出格式符
C语言输入输出格式符 printf函数(格式输出函数) 1.一般格式 printf(格式控制,输出表列) 例如:printf("i=%d,ch=%c\n",i,ch); 说明: ( ...
- [Python]-sklearn.model_selection模块-处理数据集
拆分数据集train&test from sklearn.model_selection import train_test_split 可以按比例拆分数据集,分为train和test x_t ...