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

本文总结了Python中import的使用,包括在同一文件夹下和不同文件夹下导入文件的方法,详细解释了__init__.py的作用,以及如何处理if __name__ == "__main__"的情况,并探讨了项目目录架构的基本原则。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

假设文件结构是

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: 项目说明文件。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值