• 用 VSCode 编写 python


    一、coding


    1、选择一个Python解释器

    通过命令选项板(⇧⌘P),键入Python:Select Interpreter命令,然后选择一个解释器。

    成功后左下角出现:

    2、运行代码

    二、重构


    1、提取变量 / 方法

    2、整理和排序 imports

    三、formatting & linter


    为什么要把 formatting 和 linter 放在一起说,两个其实是不同的东西(虽然通常一起协作)。因为市面上的工具有的是单独的,有时候是两者兼有,网上也没有一篇真正梳理的比较好的文章。我也就懒得分了,姑且直接以 集成进 vscode 为使用场景来分别介绍这两种。

    1、formatting - 支持

    vscode 支持 autopep8(默认),blackyapf

    (1)指定
    "python.formatting.provider": "autopep8"
    

    默认的 autopep8 无需安装,但是如果要用 black 或 yapf,则需要 pip install 它们。

    (2)配置
    # 形如 "python.formatting.[name]Args": ["--line-length", "100"],譬如:
    
    "python.formatting.blackArgs": ["--line-length", "100"]
    

    2、formatting - 推荐 black

    (1)理由

    在之前,我写过一篇 《VSCode 使用 ESLint + Prettier 来统一 JS 代码》,本来想让 python 跟 javascript 保持统一都用 Prettier,但很可惜 Prettier 不支持 python,但是 Prettier 官方推荐了用 Black

    (2)介绍

    Black是facebook提供的一个python formatter工具。

    black 号称不妥协,为什么呢?因为它检测到不符合规范的代码风格直接就帮你全部格式化好,根本不需要你确定,直接替你做好决定。且最大程度地保证格式化的最终结果一致。

    black 的名字来源于当年福特的一句话:

    Any customer can have a car painted any color that he wants so long as it is black.

    Black 是 PEP8 的严格子集。

    拓展:什么是 PEP8 ?

    为了帮助开发者统一代码风格,Python 社区提出了 PEP8 代码编码风格。

    Python 官方同时推出了一个检查代码风格是否符合 PEP8 的工具,名字也叫 pep8,后来被重命名为了 pycodestyle

    (3)地址

    官网:https://black.readthedocs.io/en/stable

    在线体验:https://black.now.sh/?version=stable

    (4)使用

    参考上文 “formatting - 支持”

    Black 依赖于 Python 3.6+,但通过其他办法也可以格式化用 Python 2 编写的代码。

    配置就用默认配置。

    (5)CLI 使用
    # 对文件
    $ black my_file.py
    
    # 对目录
    $ black my_package/
    
    (6)用在 持续集成

    待写

    (7)用在 Git pre-commit hook

    待写

    3、linter - 支持

    pylint默认的外,vscode 还支持flake8mypypydocstylePep8 (pycodestyle) prospectorpylamabandit

    (1)指定
    # 形如 "python.linting.[name]Enabled": true,譬如:
    
    "python.linting.flake8Enabled": true
    

    默认的 autopep8 无需安装,但是如果要用 black 或 yapf,则需要 pip install 它们。

    (2)配置
    # 形如 "python.linting.[name]Args": true,譬如:
    
    "python.linting.flake8Args": ["--ignore=E501,E722,W503"]
    

    4、linter - 推荐 flake8

    (1)理由

    google 了一圈发现没有啥好文章分析到底哪个 python linter 好,姑且以此帖 大家在自己的 Python 项目中倾向使用哪个 Linter? 为参考,暂且选定 flake8

    (2)介绍

    Flake8 是由 Python 官方发布的一款辅助检测 Python 代码是否规范的工具,相对于目前热度比较高的 Pylint 来说,Flake8 检查规则灵活,支持集成额外插件,扩展性强。

    Flake8 是对下面三个工具的封装:

    • PyFlakes:静态检查 Python 代码逻辑错误的工具。

    • Pep8: 静态检查 PEP8 编码风格的工具。

    • NedBatchelder’s McCabe :静态分析 Python 代码复杂度的工具。

    不光对以上三个工具的封装,Flake8还提供了扩展的开发接口。

    (3)地址

    官方文档:https://pypi.python.org/pypi/flake8/

    (4)使用

    参考上文 “linter - 支持”

    参考资料

    Linting Python in Visual Studio Code

    使用vscode开发Python程序:代码静态检查工具pylint及代码格式化工具yapf的配置使用

    四、整合 jupyter


    备注:jupyter 与 vscode 整合的并不好,最致命的问题是:

    比如有 A、B、C 三个 cell,依次执行。Python Interactive 里正常显示了执行结果:A result > B result > C result

    现在我修改了 B cell 的代码,重新执行 B cell ,执行结果:A result > B result > C result > B result

    但是这不是我想要的,我想要的结果是 :A result > B result (new) > C result , 即替换原有的结果。

    关于这个问题,我提交到了官方的 github issue :https://github.com/Microsoft/vscode/issues/67546,目前暂不考虑在 VSCode 里使用 jupyter

    1、导入

    导入jupyter ,会从 .ipynb转成 .py文件。

    2、编写 cell

    (1)普通 cell

    #%%

    (2)markdown cell

    #%% [markdown]

    注意,要用注释的方式写 markdown cell
    
    正确
    # # eric do something
    # *哈哈哈哈*
    
    错误
    # eric do something
    *哈哈哈哈*
    

    3、导出

    五、单元测试


    六、使用docker容器进行部署


  • 相关阅读:
    (22)ASP.NET Core2.2 EF创建模型(索引、备用键、继承、支持字段)
    (21)ASP.NET Core2.2 EF创建模型(关系)
    (20)ASP.NET Core2.2 EF创建模型(必需属性和可选属性、最大长度、并发标记、阴影属性)
    (19)ASP.NET Core2.2 EF创建模型(包含属性和排除属性、主键、生成的值)
    (18)ASP.NET Core2.2 基于现有数据库创建EF模型(反向工程)
    (17)ASP.NET Core2.2 EF基于数据模型创建数据库
    (16)ASP.NET Core2.2 通用主机(HostBuilder)
    (15)ASP.NET Core2.2 Web主机(IWebHostBuilder)
    (14)ASP.NET Core2.2 中的日志记录
    前端也要懂物理 —— 惯性滚动篇
  • 原文地址:https://www.cnblogs.com/xjnotxj/p/10342251.html
Copyright © 2020-2023  润新知