目录
一、模块/包编写规则
这一段是复习一下基本的编写规则,有基础的朋友可跳过
1.基本概念
python模块(module):
模块让你能够有逻辑地组织你的 Python 代码段。使用import
语句即可引入模块
把相关的代码分配到一个模块里能让你的代码更好用,更易懂。模块能定义函数,类和变量.
python包(package):
包是一个分层次的文件目录结构,它定义了一个由模块及子包,和子包下的子包等组成的 Python 的应用环境.
这里的包是一种文件夹,python解释器的识别规则是该文件夹下必须存在 __init__.py 文件, 该文件的内容可为空。
2.调用方法
对于模块
方法一,采用import语句调用
前提是你写代码的文件和module111文件在同目录下。以下方法均为此前提
import module111 #方法一
调用module111中的add函数和实例化类时,可以使用
import module111
module111.add() #调用函数
#类的实例化
a = module111.Myclass()
a.add()
方法二,在import
语句后边跟上as
,可以未引入的包自定义一个简单的名字,比如pandas比较复杂,所以可以使用as
定义一个简单的名称,但是使用as后前边的模块名就不再起作用了:
import pandas as pd
pd.dataframe()
方法三,采用from... import结构
from Module111 import hello
hello()
# 实例化Module111中的类会报错,因为没有引入Class
myclass = Class()
如果不需要整个module
中的内容全部引入进来,则可以使用方法
从一个模块中引入需要的部分,而且在使用时也不能使用里面类实例化的方法(使用的话会报错),因为没有import
方法四,如图,就是调用全部函数,但如果多个模块的函数重名,则会出现问题
from module_name import *
对于包
包可以理解为模块的批量存储,就不用散装的放在外面了
文件夹成为一个包的标志是,包含一个名为 __init__.py
的文件,这个文件可以是空的。
假设工程的文件夹结构如下
|--- Project
|--- train.py
|--- myPackage
|--- __init__.py
|--- myModule.py
现在需要在train.py文件调用myPackage里的模块了,使用如下方法
import Package.myModule as pm
# 使用Module的方法
pm.hello()
# 实例化Module中的类
myclass = pm.Class()
myclass.hello()
区别在于模块前需要加上前面包文件夹的名字和.运算符
其余调用模块的方法和上面一样,这里简要介绍
#方法一
import package.module
#方法二
import package.module as pm
#方法三
from package import content
#方法四
from package import *
二、debug问题
作者在使用from... import...调用时,出现了ImportError cannot name
根据这篇文章ImportError :cannot import name xxxxxx 的三种类型的解决方法_importerror: cannot import name-优快云博客
依次实验判断解决,主要注意文件路径和模块命名问题
import Fill_missvalues11
import pandas as pd
missing_info_df = Fill_missvalues11.analyze_missing_values(df_train_mod, df_test_mod)
print(missing_info_df)
最后采用这种方法,即改变了模块的命名代码就跑通了
参考网站
Python中编写与引入自己的包、模块_把自己的代码打包成python包,并可以使用import导入-优快云博客
关于module 'XXX' has no attribute 'XXX'**的二三事_attributeerror: module ‘face_recognition‘ has no a-优快云博客
「Python」进阶教程 什么是模块?如何创建导入和使用模块_哔哩哔哩_bilibili