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。
同名状况暂时就遇到这几种情况。
网友评论