PyCharm中Directory与Python package的区别

Posted za0909

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PyCharm中Directory与Python package的区别相关的知识,希望对你有一定的参考价值。

对于Python而言,有一点是要认识明确的,python作为一个相对而言轻量级的,易用的脚本语言(当然其功能并不仅限于此,在此只是讨论该特点),随着程序的增长,可能想要把它分成几个文件,以便逻辑更加清晰,更好维护,亦或想要在几个程序中均使用某个函数,而不必将其复制粘贴到所有程序中。

为了支持这一点,Python有一种方法将定义函数放在一个文件中,并在脚本中使用它们,这样的文件叫做模块,一个模块中的定义可以被导入到其他模块,或者主模块中。

简单来说在python中模块就是指一个py文件,如果我们将所有相关的代码都放在一个py文件中,则该py文件既是程序由是模块,但是程序和模块的设计目的是不同的,程序的目的是为了运行,而模块的目的是为了其他程序进行引用。

Directory: 
Dictionary在pycharm中就是一个文件夹,放置资源文件,对应于在进行JavaWeb开发时用于放置css/js文件的目录,或者说在进行物体识别时,用来存储背景图像的文件夹。该文件夹其中并不包含_ _ init.py_ _文件

Package(Python中将一个.py文件看作一个module): 
对于Python package 文件夹而言,与Dictionary不同之处在于其会自动创建_ _ init.py_ _文件。 
简单的说,python package就是一个目录,其中包括一组模块和一个_ _ init.py_ _文件。目录下具有init.py文件,这样可以通过from…import的方式进行.py文件的导入.

 

如下通过几个例子进行说明,如何进行module的导入,目录结构如下:

技术分享图片

假设file这个package是一个开源包,里面有一些现有的我们需要在one文件中使用的方法。

hello.py代码:

class package():
    def Foo(self):
        print "hello world"
class two():
    def Foo2(self):
        print "hello Python"

def write(str):
    print str

 

对于module的导入,个人认为有如下方式: 
(1)形式:import module(将整个模块全部导入)

import file.hello
o = file.hello.package() #可能同时import多个module,因此使用的方法需要说明是哪个module中的方法
o.Foo()
file.hello.write("hello")#说明是file.hello这个module中的write方法

 

(2)from module import 需要用的类名或方法名

from file.hello import package,write
o = package() #已经声明了导入的package是file.hello这个module的,因此不必再使用前缀
o.Foo()
write("hello")
 

(3)from package(包) import module

from image import hello
hello.write("hello")
o = hello.package()  #同样可能导入了多个模块,因此需要注明是哪个模块的
o.Foo()

 

需要注意的是,可以从package中进行import,但是对directory无法进行import,想导入某个文件夹中的.py文件,必须有init.py文件,在module导入之后就可以使用module中的类,函数,变量。

 

以上内容皆来自于网络!!





以上是关于PyCharm中Directory与Python package的区别的主要内容,如果未能解决你的问题,请参考以下文章

PyCharm选中文件夹新建时Directory与Python package的区别

Python入门之PyCharm中目录directory与包package的区别

Pycharm 报错 Environment location directory is not empty

PyCharm 中“目录”和“Python 包”的区别

pycharm 用远程环境时报错bash: line 0: cd: /home/tmp: No such file or directory

pycharm导致刷新变宽