python项目开发中首先要学习的几个知识点

python项目开发中首先要学习的几个知识点

1.知识点:
  • python中的推荐命名规范。

  • python项目的推荐目录结构。

  • python中__init__.py的作用。

  • python中在不同文件夹/同一个文件夹两种情况下如何引用另一个.py文件。

  • python为什么要使用if __name__ == '__main__':

2.解释:
  1. python中的推荐命名规范。

    参考Google开源风格

    python代码中需要命名的主要包括包、模块、类、函数、变量、常量,python之父Guido推荐的 命名方法如下:*

    类型说明示例
    小写下划线my_package
    模块小写下划线my_module
    大驼峰命名法MyClass
    函数小写下划线my_function
    变量小写下划线my_variable
    常量大写下划线MY_CONSTANT
  2. python项目的推荐目录结构。

    以项目名称为‘MyProject为例,说明推荐的目录结构,如下:’

    MyProject/   项目名称
    |-- bin/ 目录下放项目的可执行文件
    |   |-- myproject
    |
    |-- my_project/ 所有的项目代码、模块目录都放在这个目录下
    |   |-- tests/ 单元测试代码目录
    |   |   |-- __init__.py
    |   |   |-- test_main.py
    |   |
    |   |-- __init__.py
    |   |-- main.py 程序入口
    |
    |-- docs/ 项目文档目录
    |   |-- conf.py
    |   |-- abc.txt
    |
    |-- setup.py 安装、部署、打包的脚本
    |-- requirements.txt 依赖的外部python包的列表
    |-- README 项目说明文件
    
  3. python中__init__.py的作用。

    __init__.py主要有两个作用:

    1. 让代码文件夹变成可以被导入import的软件包,如果文件夹下没有__init__.py文件则使用import 或from import 会报错 ImportError: No module named...
    2. 使用 from pakge import *时 *****所指的模块可以在__init__.py中自定义

    下面以2中推荐目录说明__init__.py的作用,python3.3及以上版本不使用__init__.py也不会报错,但在这里我们还是推荐使用__init__.py

    • 以2中目录为例,如果my_project文件夹和tests文件夹中没有__init__.py,那么在想要在docs文件夹下的conf.py文件中使用其他模块将会报错,如下:

      conf.py中代码运行结果
      import my_project.mainImportError: No module named my_project.main
      import my_project.tests.test_mainImportError: No module named my_project.tests.test_main
    • 以2中目录为例,如果只有my_project中有__init__.py,那么在想要在docs文件夹下的conf.py文件中使用其他模块如下:

      conf.py中代码运行结果
      import my_project.main成功
      import my_project.tests.test_mainImportError: No module named my_project.tests.test_main
    • 以2中目录为例,如果my_project文件夹和tests文件夹中都有__init__.py,那么在想要在docs文件夹下的conf.py文件中使用其他模块如下:

      conf.py中代码运行结果
      import my_project.main成功
      import my_project.tests.test_main成功
  4. python中在不同文件夹/同一个文件夹两种情况下如何引用另一个.py文件。

    • 不同文件夹

      在python3.3及以上的版本中,不同文件夹引用.py文件的方法如下:

      # 以2中目录为例,my_project目录中的main.py 要引用 tests 目录下的test_main.py
      import tests.test_main
      # 或者
      from tests import test_main
      

      在python3.3以下的版本,在要引用.py的文件夹下添加__init__.py文件后,可使用如上同样的方法导入.py模块。

    • 同一文件夹直接使用import 模块名(.py文件名)导入

  5. python为什么要使用if __name__ == '__main__':

    先给结论:

    1.防止当前.py文件在被其他.py文件导入时显示多余的程序主体部分

    2.程序的入口

    举例如下:

    ​ 有aa_one.py文件,其中定义了一个print_a()方法,同时还打印了一行字符串

在这里插入图片描述

​ 现在有aa_two.py想要调用aa_one.py中的方法print_a()方法,如下:

在这里插入图片描述

​ 我们从如上执行结果可以看到,我们只想要调用执行aa_one.py中的方法print_a()方法,但在调用print_a()方法之前就先执行print('what ever'),原因是在我们使用import aa_one语句导入时会把aa_one.py中的代码执行一遍,如何规避这个问题呢,有的同学可能会想到把print('what ever')删除掉不就好了吗,这其实是一种解决方案,但是更多时候我们在写一些功能类或者方法的时候,我们就是需要在文件中编写一些测试的代码,但是在写完之后我们又不想删除,因为可能有时候还需要调整测试,为了满足这个需求,我们就可以使用if __name__ == '__main__':,我们再来看下使用了if __name__ == '__main__':的情况:

在这里插入图片描述
这个时候print('what ever')就不会在调用中被执行,功能类和方法的调试代码就可以写到if __name__ == '__main__':中,在被其他模块调用时也不用删除这些测试代码,同时if __name__ == '__main__':也作为**程序的入口**。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值