Python 语言最明显的特征之一是用缩进量表示从属关系,没有采用 Java, C 用括号定义作用域的自由书写风格。 所以 Python 对代码格式的要求十分严格,社区发展出了完整的编码规范和丰富的检查和修复工具,并能够整合到几乎所有主流编辑器中。
编码规范在提升代码质量和可读性、降低维护成本等方面发挥了核心作用,但如果没有相应的工具链帮助其落地,很难真正产生效果,本文第3、4节专门论述如何搭建可用的工具链。
Python 社区不鼓励对编码规范做人工审查,因为人工审查存在如下问题:
| title,url,time_added,tags,status | |
| defmacro - The Nature of Lisp,http://www.defmacro.org/ramblings/lisp.html,1340872707,lisp xml ant,unread | |
| HTTP Made Really Easy,http://www.jmarshall.com/easy/http/,1449453698,http|tech,unread | |
| AsciiDoc cheatsheet,https://powerman.name/doc/asciidoc,1547390268,asciidoc,unread | |
| ContiPerf 2,http://databene.org/contiperf,1349362779,java|test,unread | |
| AJAX in Django with jQuery | webcloud,http://webcloud.se/log/AJAX-in-Django-with-jQuery/,1338701906,ajax|django|jquery,unread | |
| 如何证明一加一等于二? | 科学人 | 果壳网 科技有意思,https://www.guokr.com/article/6556/,1529657618,math,unread | |
| Intro to Unintrusive JavaScript with Django - Irrational Exuberance,http://dev.lethain.com/intro-to-unintrusive-javascript-with-django/,1338701831,django ajax webservice,unread | |
| http://mindhacks.cn/2011/11/04/how-to-interview-a-person-for-two-years/,http://mindhacks.cn/2011/11/04/how-to-interview-a-person-for-two-years/,1405132841,,unread | |
| » What I Learned From Increasing My Prices ExtendsLogic,http://www.extendslogic.com/business/ |
| #!/usr/bin/env python3 | |
| ## This script starts a Web server providing texts and files sharing function. | |
| ## See the usage with `-h` option. | |
| import os | |
| import sys | |
| import argparse | |
| import urllib.parse | |
| from http.server import HTTPServer, BaseHTTPRequestHandler |
| { | |
| "$schema": "https://vega.github.io/schema/vega/v5.json", | |
| "description": "A Demo", | |
| "width": 700, | |
| "height": 500, | |
| "padding": 0, | |
| "autosize": "none", | |
| "data": [ | |
| { | |
| "name": "nodes", |
| { | |
| "nodes": [ | |
| {"id": 1, "name": "1.13", "IP": "192.168.1.13", "group": "attacker"}, | |
| {"id": 2, "name": "3.14", "IP": "192.168.3.14", "group": "victim"}, | |
| {"id": 2, "name": "3.18", "IP": "192.168.3.18", "group": "victim"} | |
| ], | |
| "edges": [ | |
| {"id": 1, "source": 1, "target": 2, "relation": "SQL Injection"}, | |
| {"id": 1, "source": 1, "target": 3, "relation": "Web Shell"} | |
| ] |
| [project] | |
| name = "my-fancy-project" | |
| description = "My fancy project" | |
| authors = [ | |
| {name = "Leo", email = "[email protected]"}, | |
| ] | |
| version = "0.1.0" | |
| readme = "README.md" | |
| license = {text = "MIT"} |
| import pexpect | |
| import argparse | |
| import importlib | |
| from pygments.styles.vim import VimStyle | |
| from prompt_toolkit import PromptSession | |
| from prompt_toolkit.history import FileHistory | |
| from prompt_toolkit.lexers import PygmentsLexer | |
| from prompt_toolkit.styles import style_from_pygments_cls | |
| from prompt_toolkit.auto_suggest import AutoSuggestFromHistory | |
| from prompt_toolkit.application.current import get_app |
| /// This is the implementation of the first 2 parts of the wonderful 4-parts | |
| /// posts "Understanding Parser Combinators" of | |
| /// [F# for fun and profit](https://fsharpforfunandprofit.com/): | |
| module ParserLib1 = | |
| open System | |
| /// Type that represents Success/Failure in parsing | |
| type ParseResult<'a> = |
| #!/bin/sh | |
| # Function: | |
| # print $output_num sections by order, | |
| # each have $sec_num adjacent records | |
| # from file $inp | |
| inp=$1 | |
| output_num=$2 | |
| sec_num=$3 |
| rc=%{$reset_color%} | |
| cy=$fg_bold[cyan] | |
| bl=$fg_bold[blue] | |
| re=$fg_bold[red] | |
| wh=%{$fg_bold[white]%} | |
| ye=$fg_bold[yellow] | |
| gr=$fg_bold[green] | |
| ma=$fg_bold[magenta] | |
| ZSH_THEME_GIT_PROMPT_PREFIX="git(" |