python学习总结1_项目结构及文件基础

1.python项目基本结构

我先根据前段时间广为流传的一份python脚本学习了一下python的基本项目结构,如下图:

py_1.png

和其他项目差不多,有异常处理、工具类、业务逻辑模块、配置文件、程序入口文件等。

清晰明了的项目结构是以后做项目第一要做的事。

展开各个文件夹,会看到每个文件夹下都有一个__init__.py文件,如下图:

py_2.png

而且这个文件除了一些注释没有其他内容,我查资料了解了一下这个文件的作用:

__init__.py文件的作用是将文件夹变为一个Python模块,Python 中的每个模块的包中,都有__init__.py文件

通常__init__.py文件为空,但是我们还可以为它增加其他的功能。我们在导入一个包时,实际上是导入了它的__init__.py文件。这样我们可以在__init__.py文件中批量导入我们所需要的模块,而不再需要一个一个的导入。

2.入口文件
import sys

from maotai.jd_spider_requests import JdSeckill

if __name__ == '__main__':
    a = """                                                                                                                                                                                     
    功能列表:                                                                                
    1.恐惧
    2.贪婪
    """
    print(a)

    jd_seckill = JdSeckill()
    choice_function = input('请选择:')
    if choice_function == '1':
        jd_seckill.reserve()
    elif choice_function == '2':
        jd_seckill.seckill_by_proc_pool()
    else:
        print('没有此功能')
        sys.exit(1)

这个里面我不太清楚的就是__name__ == '__main__'的用法,查找资料,找到解释如下:

一个Python文件有两种使用方法, 第一是直接作为脚本执行,第二是通过在其它py文件中导入该文件调用执行。

__name__ == '__main__'的作用就是控制这两种情况的代码执行过程。

简言之:if __name__ == '__main__'下的代码只有在被作为脚本执行的情况下才会执行。

看完上面的解释,我运行这个项目的时候,就可以打开我的命令终端,输入命令 python main.py执行。

像一些工具方法,如果不是测试需要,就不用写if __name__ == '__main__'的代码,因为工具类通常就是导入到别的py文件中使用的,如果需要测试工具类中的方法,那就可以加入这部分代码。

比如下面这个工具文件:

py_3.png

3.类
class SpiderSession:
    """
    Session相关操作
    """

    def __init__(self):
        self.cookies_dir_path = "./cookies/"
        self.user_agent = global_config.getRaw('config', 'DEFAULT_USER_AGENT')

        self.session = self._init_session()

    def _init_session(self):
        session = requests.session()
        session.headers = self.get_headers()
        return session

    def get_user_agent(self):
        return self.user_agent

这是一个类文件里的部分代码,__init__(self)方法是类的一个特殊方法,可以理解为构造函数。在类中定义的方法,第一个参数都必须是self,这也是类中的方法和普通函数的区别,对比上面的工具文件里面的方法,就不需要self参数。

完!

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

角落工程师

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值