您的位置:首页 > 编程语言 > Python开发

Python import 及项目目录架构 使用总结

2017-03-31 20:24 465 查看
假设文件结构是

parent/
yz/<br>
 __init__.py
test2.py
test1.py
test2.py


/test2.py

i = 2
def function():
print 123
a = 'hello'
class ClassName(object):
"""docstring for ClassName"""
def __init__(self, arg):
super(ClassName, self).__init__()
self.arg = arg


yz/test2.py

# -*- coding:utf8 -*-
'''wer'''
a = 37
def foo():
print "I'm foo"
class bar:
def grok(self):
print "I'm bar.grok"
b = bar()


import 同一文件夹下的文件

test1 引用 test2

import test2
print test2.i
test2.function()
b = test2.bar()


from test2 import i
print i


import 文件名

仅仅是把文件名引到了python的命名空间

利用.寻找其中的值

import 不同文件夹下的文件

test1 引用 yz/test2

注意这时必须在/yz文件中设置init.py(才能把文件夹识别为目录)

from yz.test2 import a
print a


from yz import test2
print test2.a


__init__.py的作用

  偶尔可以看到有些人写的包下面还会有一个__init__.py,它的作用是在导入包时首先执行的。

if __name__ == “__main__”

  也有时候会看到 .if __name__ == "__main__" 语句,它的作用就是当此文件没有被作为导入的文件使用时执行 if 语句块里的程序。

  假如 exp.py 中加入了 **if __name__ == "__main__"** ,然后 **python3 exp.py**,就会执行这个语句块里的内容

  而 如果** if __name__ == "exp"**,时则是被 其他文件 以** "import exp"**导入时执行的部分

  有如果是** if __name__ == "one.exp"**,时则是被 其他文件 以** "import one.exp"**导入时执行的部分

  注意 在  "import exp"时是不会执行 if __name__ == "one.exp"中的内容的!同样: "import one.exp“是不会执行 if __name__ == "exp"中的内容的


项目目录架构

假设你的项目名为foo, 我比较建议的最方便快捷目录结构这样就足够了:

Foo/
|-- bin/
|   |-- foo
|
|-- foo/
|   |-- tests/
|   |   |-- __init__.py
|   |   |-- test_main.py
|   |
|   |-- __init__.py
|   |-- main.py
|
|-- docs/
|   |-- conf.py
|   |-- abc.rst
|
|-- setup.py
|-- requirements.txt
|-- README


简要解释一下:

bin/: 存放项目的一些可执行文件,当然你可以起名script/之类的也行。
foo/: 存放项目的所有源代码。
(1) 源代码中的所有模块、包都应该放在此目录。不要置于顶层目录。
(2) 其子目录tests/存放单元测试代码;
(3) 程序的入口最好命名为main.py。
docs/: 存放一些文档。
setup.py: 安装、部署、打包的脚本。
requirements.txt: 存放软件依赖的外部Python包列表。
README: 项目说明文件。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  python
相关文章推荐