python import同文件夹包注意点

2020-06-22

我在使用PyCharm写Python代码时,某个py文件会使用其他的py文件中的类或者函数。这里会使用import函数做导入。但是在import的过程中我经常报错。这里把需要注意的几种import类型写一下。避免再次犯错。

两种情况,如果是到用到另一个文件中的函数的话:

recommend使用同个文件夹下的tf_w2v文件

这里recommend.py文件中使用了tf_w2v下的函数,这里的函数都是def的函数,没有用类或者方法。

此时虽然两个py文件在同一文件夹下,在导入时也要写上文件夹的名字,从文件夹中导入方法,写成:from 文件夹名 import 文件名

然后在py文件中,使用文件名.方法来使用。这里py文件名和package名都可以使用中文,当然最好还是用英文,免得以后可能会出一些莫名其妙的错误。

文件A使用同包下文件B函数

放在不同的包下也是一样的。写成:from 文件夹名 import 文件名

文件A使用不同包下的文件B


第二种情况,如果要使用另一个文件中的的话。

如果Python文件名和类名不一样的话,那么就和上述的使用方法一样。

引入文件,然后使用文件中的类。

类B中的class B使用类A中的class A的方式

这里的导入方式还可以写成import testclass.类A。这里参考知识PyCharm中Dictionary与Python package的区别 

但是这样写的话,下面()中的内容也要写成testclass.类A.A 。也太长了,还是只引入类A比较方便。当然,如果不光使用了类A,还使用了类A.py中的其他代码的话,还是要都写上。

这里有两个注意的点,引用自上面那篇文章。

第一点:引用的小单位应当是一个模块,也就是一个py文件。

引用自上面链接文章

第二点:如果要使用import *的话就需要把Python package中的init文件写一下。

说明引用自上面链接文章

init文件内的写法如下

init文件内部写法

写完后,在类B中使用import * 不再报错。

使用import *

如果Python文件名和里面的类名一样的话

(说明这种情况是因为Java语言文件名和类名一样,import文件名就算直接导入类了,Python的情况和Java不一样,为避免把Java的习惯带进来,这里专门说明一下。实际上在Python里不管名字是否一样都是一个用法。没有Java的习惯的话,这里不看也行。)

其实这里的使用和上面文件名和类名不一样的用法没有区别。还是要用py文件名.类名的方式来使用。这里就是A.A。第一个A是py文件名,第二个A是class A。

同名状况

暂时就遇到这几种情况。

你可能感兴趣的:(python import同文件夹包注意点)