编程 6

text3下搭建python开垦条件,Python格式化学工业具yapf使用表达

By admin in 编程 on 2019年9月3日

Google开源的Python格式化工具YAPF的安装和使用教程,pythonyapf

目前用于Python的格式化程序(如autopep8和pep8ify)都用于删除代码中的lint错误。这有很明显的局限性。
YAPF采用了不同的方法,基于Daniel
Jasper开发的“’clang-format”。从本质上来说,该算法取走代码并重新排版,以符合样式指南的最佳格式,即便原始代码没有违反样式指南。这个想法也是类似于Go编程语言的gofmt工具。
其最终目标是让YAPE所产生的代码可以与程序员所写的代码一样好(前提是程序员遵循样式指南),它取代了一些维护代码的苦差。

安装 可以直接通过pip进行安装:

pip install yapf

如果你打算使用YAPF作为一个命令行工具,而不是一个库,那么安装是没有必要的。通过Python解释器,YAPF可以作为一个目录运行。如果你克隆/解压YAPF到DIR,可以这么运行:

$ PYTHONPATH=DIR python DIR/yapf [options] ...

YAPF的使用 安装完成之后,就可以直接在命令行中使用了。 以下是yapf的命令行参数:

usage: yapf [-h] [--style STYLE] [-d | -i] [-l START-END | -r] ...

Formatter for Python code.

positional arguments:
 files

optional arguments:
 -h, --help   显示帮助信息
 --style STYLE   指定需要格式化的编程风格,如pep8或者google等
      也可以是自定义的设置文件。默认是pep8
 -d, --diff   比较格式化后的文件和原文件的区别
 -i, --in-place  直接把格式化的文件更改在源文件上
 -l START-END, --lines START-END
      指定格式化的行的范围
 -r, --recursive  在目录中递归运行

格式样式 使用YPF的格式样式是可以配置的,并且有许多“knobs”可用于调整YAPF是如何做格式的。(查看style.py模块)
为了控制样式,运行带有–style的YAPF。它接受一个预定义的样式(例如pep8或google)——一个通往配置文件(能指定所需样式或一个键/值对的字典)的途径。
配置文件是一个简单的键=值对的列表(区分大小写),拥有一个【style】,例如:

编程 1

当然也可以通过字典在命令行上做出同样的事情,例如:
–style='{basedonstyle: google, indent_width: 4}’
这将用google作为基础样式,并修改成拥有4个空格缩进。

例子 以下是一段非常ugly的代码:

x = { 'a':37,'b':42,

'c':927}

y = 'hello ''world'
z = 'hello '+'world'
a = 'hello {}'.format('world')
class foo (  object ):
 def f (self ):
 return  37*-+2
 def g(self, x,y=42):
  return y
def f ( a ) :
 return  37+-+a[42-x : y**3]

利用yapf将它格式化:

x = {'a': 37, 'b': 42, 'c': 927}

y = 'hello ' 'world'
z = 'hello ' + 'world'
a = 'hello {}'.format('world')


class foo(object):
 def f(self):
  return 37 * -+2

 def g(self, x, y=42):
  return y


def f(a):
 return 37 + -+a[42 - x:y ** 3]

好看很多!

另外,YAPF在格式化的时候仍然有一些问题。如:

BAZ = {
 [1, 2, 3, 4],
 [5, 6, 7, 8],
 [9, 10, 11, 12]
}

当有一大段内容的时候,我们都习惯分行排列,因为这显然更方便我们阅读。但是,使用YAPF格式化后:

BAZ = {[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]}

遇到这种情况,YAPF也提供了解决的方法,就是在代码段的后面加上: # yapf:
disable

BAZ = {
 [1, 2, 3, 4],
 [5, 6, 7, 8],
 [9, 10, 11, 12]
} # yapf: disable

所以,YAPF是一个非常有用的工具,它可以帮助你将代码变得更加一致、更加容易阅读并且Pythonic。

目前用于Python的格式化程序(如autopep8和pep8ify)都用于删除代码中的lint错误。这…

自己希望的python开发环境并不需要很强大的功能

YAPF (Yet Another Python
Formatter)是Google开源的一个用来格式化Python代码的工具. 支持2种代码规范

  • 自动格式化,遵循一定的编码风格
  • 能够检测语法错误
  • 能够了解函数,类的定义,并能自动跳转到代码的定义处
  • 具备代码自动完成功能
  • PEP8
  • Google style

pep8

Python style guide
checker,主要是检查python代码风格

pip install pep8
pip install --upgrade pep8
pep8 --statistics -qq ./parse.py

安装(Ubuntu 14.04)##\

$ sudo pip install yapf

pyflakes

Like pep8,
pyflakes
is also a verification tool for python source codes.

Unlikely pep8, pyflakes doesn’t verify the style at all but verify only
logistic errors.

pip install pyflakes
pyflakes ./parse.py

常用命令##\

  • 直接跟文件名(并不修改文件)

$ yapf <python file>

编程 2

源文件.png

编程 3

yapf格式化后的文件.png

  • 格式化前后对比

$ yapf -d <python file>

编程 4

yapf对比效果.png

  • 直接修改源文件

$ yapf -i <python file>
  • 导出配置文件

$ yapf --style-help > style.cfg
  • 自定义配置文件并使用

此例为将缩进由4个空格改为2个空格

$ yapf --style-help > my_style.cfg
$ sed -i "s/indent_width=4/indent_width=2/" my_style.cfg
$ yapf --style my_style.cfg loops.py

编程 5

缩进为2个空格.png

  • 其它用法
    • 在代码中控制是否使用yapf

# yapf: disable
<code will not be formatted>
# yapf: enable

编程 6

部分代码不进行格式化.png

  • 并发格式化多个文件,需要futures模块支持

$ yapf -pi *.py

autopep8

A tool
that automatically formats Python code to conform to the PEP 8 style
guide

注意:缩进是错误不是样式,所以是不能修复的,autopep8 requires pep8.

pip install --upgrade autopep8
autopep8 --in-place  --aggressive <filename>

更多用法请参考##\

$ yapf -h

https://github.com/google/yapf
https://pypi.python.org/pypi/yapf

AutoPEP8

Sublime Auto PEP8
Formatting

Automatically formats Python code to conform to the PEP 8 style guide
using
autopep8
and pep8
modules

Sublime Text > Preferences > Package Settings >
AutoPep8 > Settings-User

{
    "settings": {
        "sublimeautopep8": {
            "max-line-length": 79,
            "format_on_save": false,
            "show_output_panel": true,
            "ignore": "E24,E226,E501",
            "syntax_list": ["Python"],
            "file_menu_search_depth": 3
        }
    }
}

可以使用Control + Shift + 8 to
format code,也可以选择部分代码format code

SublimeLinter3

Interactive code linting framework for Sublime Text
3

一个代码静态检查工具框架(linter),在python下推荐安装SublimeLinter-pyflakesSublimeLinter-pep8,大多数linter都需要先安装一些依赖库才能使用,比如SublimeLinter-pyflakes需要安装pyflakes

Sublime Text > Preferences > Package Settings >
SublimeLinter > Settings-User
下是全局的配置

SublimeLinter-pep8

This linter
plugin
for SublimeLinter provides an interface to pep8. It will be used with
files that have the Python syntax

SublimeLinter-pyflakes

SublimeLinter plugin for python, using
pyflakes

For general information on how SublimeLinter works with settings, please
see
Settings.
For information on generic linter settings, please see Linter
Settings.

In addition to the standard SublimeLinter settings,
SublimeLinter-pyflakes provides its own settings. Those marked as
Inline Setting may also be used
inline.

SublimeCodeIntel

Full-featured code intelligence and smart autocomplete
engine,这个文档是我认为写的最好的Sublime插件文档.

该插件支持的功能:

  • Jump to Symbol Definition
    (Alt+Click调到函数定义处,Control+Shift+space返回Go back)
  • Imports autocomplete(代码自动完成)
  • Function Call tooltips(函数调用说明)

对于python的设置

"Python": {
    "python": "C:\\Python27\\python.exe",
    "codeintel_scan_extra_dir": [], #排除扫描的路径
    "codeintel_scan_files_in_project": true,
    "codeintel_max_recursive_dir_depth": 15,#扫描层级
    "codeintel_scan_exclude_dir":[""] #扫描的目录
}

注意:v3.0以上版本需要安装CodeIntel python库,v2.2.0+st3是目前比较稳定的版本

如何在实践中使用这些插件

  • 安装pep8,autopep8命令行工具,安装AutoPEP8插件,主要使用ctrl+shift+8修复样式上的问题.
  • 安装SublimeLinter-pep8插件,主要是查阅样式问题.可通过四种方式查阅样式问题:
    • 通过快捷键操作
    • 选择Tools-SublimeLinter工具选择全部错误,
    • ctrl+shift+p打开控制面板显示错误.另外可通过工具栏选择Show Errors on Save.
    • 右键选择操作
      该插件说明:
    • 可自定义快捷键
    • 编程,最后考虑样式问题可能比较多,容易和语法错误混杂,所以不使用该插件
  • 安装pyflakes命令行,SublimeLinter-pyflakes插件,主要显示语法错误,可通过Show Errors on Save配置在保存的时候显示错误.
  • sublimeText本身就是python语言开发的,所以直接内置了python解析器,CTRL+B就能运行编写的python代码
  • 安装SublimeCodeIntel插件,主要提供跳转到函数定义处,并可以跳转到调用处,自动完成功能

anaconda

anaconda是以个比较强大的IDE,说明文档

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图
Copyright @ 2010-2019 澳门新葡亰官网app 版权所有