python3代码规范

一、概述

  1、编码

    • 一般情况下,文件使用UTF-8编码
    • 一般情况下,文件头部必须加入 # -*- coding:utf-8 -*- 标识
# -*- coding:utf-8 -*-

# 打印九九乘法表
for i in range(10):
    for j in range(1, i + 1):
        print("{}x{}={}".format(j, i, i * j), end="\t")
    
    print()

  

  2、代码格式

    2.1 缩进

      • 统一使用4个空格进行缩进

    2.2 行宽

      • 每行代码尽量不要超过80个字符(在特殊情况下最长不超过120个字符)

    2.3 引号

      一般情况下,自然语言使用双引号,机器标示使用单引号

      • 自然语言 使用双引号 "..."

          print("hello world!")

      • 机器标示 使用单引号 '...'

          dict1 = {'one': 1, 'two': 2, 'three': 3}

      • 正则表达式 使用原生的双引号 "..."

          result = re.search("^[a-zA-Z]{6,10}$", name).group()

      • 文档字符串(docstring)使用三引号 """..."""

 

  3、import 语句

    import 语句应该放在文件头部,置于模块说明及(dicstring)之后,于全局变量之前

    3.1 import 语句应该分行书写

# 正确的写法
import os
import sys

# 错误的写法
import sys, os

# 正确的写法
from subprocess import Popen, PIPE

    3.2 import 语句应该使用absolute import 

# 正确的写法
from foo.bar import Bar

# 不推荐的写法
from ..bar import Bar

    3.3 import 语句应该按照顺序排列,每组之间用一个空行分隔

import os
import sys

import msgpack
import zmq

import foo

    3.4 导入其他模块的类定义时,可以使用相对导入

from myclass import MyClass

    3.5 如果发生命名冲突,则可以使用命名空间

import bar
import foo.bar

bar.Bar()
foo.bar.Bar()

 

  4、空格

    4.1 在二元运算符两边各1空格 [=, -, +=, ==, >, in, is not, and] 等 

# 正确的写法
i = 1
j += 1
x = i * 5
y = x * x + 2
c = (x + y) * (x - y)

# 不推荐的写法
i=1
j +=1
x = i*5
y = x*x + 2
c = (x+y) * (x-y)

    4.2 列表(list)、元组(tuple)、字典(dict)、函数等的元素或参数列表中, ,   : 之后要有空格

# 正确的写法
list1 = [1, 2, 3, 4]  # 列表(与元组类似)
dict1 = {
     'one': 1, 'two': 2, 'three': 3}  # 字典


def func1(x, y):  # 函数
    z = x + y

    return z
# 不推荐的写法
list2 = [1,2,3,4]  # 列表(与元组类似)
dict2 = {
     'one':1,'two':2,'three':3}  # 字典


def func2(x,y):  # 函数
    z = x + y

    return z

    4.3 函数的参数列表和print()中的end用法,默认值等号两边不要添加空格

# 正确的写法
def person1(name, gender='male'):
    print("姓名:%s,性别:%s" % (name, gender))


# 不推荐的写法
def person2(name, gender = 'male'):
    print("姓名:%s,性别:%s" % (name, gender))
# 正确的写法
for i in range(3):
    print(i, end=' ')
    
# 不推荐的写法
for j in range(3):
    print(j, end = ' ')

    4.4 不要为对齐赋值语句而使用额外空格

# 正确的写法
name1 = 'Tom'
age1 = 23
favorite_subject1 = 'Math'
# 不推荐的写法
name2             = 'Tom'
age2              = 23
favorite_subject2 = 'Math'

 

  5、换行

    5.1 Python支持两种括号内的换行(不用换行时,尽量一行显示)

      1)第二行缩进到括号里(一行显示,内容太多时)

def long_function_name1(stu_name, stu_age,
                       stu_gender, stu_hobby):
    print(stu_name, stu_age,
          stu_gender, stu_hobby)

      2)第二行缩进4个空格(内容且较复杂时,分行显示可使代码更清晰)

def long_function_name2(
        stu_name,
        stu_age,
        stu_gender,
        stu_hobby
):
    print(
        stu_name,
        stu_age,
        stu_gender,
        stu_hobby
    )

    5.2 使用反斜杠 \  换行,长字符串也可以使用此方法换行

def function1(name, age, gender, hobby):
    return "姓名:{},年龄:{},性别:{},爱好:{}"\
        .format(name, age, gender, hobby)


str1 = 'My name is Alice, ' \
       'I have been in China 10 years.'

    5.3 一般情况下,一个语句占一行

# 正确的写法
a = 1
b = 2
c = 3
# 不推荐的写法
x = 1; y = 2; z = 3

    5.4 if、for、while等一定要换行

# 正确的写法
if a > b: 
    print(a)
# 不推荐的写法
if a > b: print(a)

    5.5 docstring

      1)所有的公共模块、函数、类、方法,都应该写docstring。私有方法不一定需要,但应该在def后提供一个注释块来说明

      2)docstring的结束 """  应该独占一行,除非此docstring只有一行

def input(*args, **kwargs): # real signature unknown
    """
    Read a string from standard input.  The trailing newline is stripped.
    
    The prompt string, if given, is printed to standard output without a
    trailing newline before reading input.
    
    If the user hits EOF (*nix: Ctrl-D, Windows: Ctrl-Z+Return), raise EOFError.
    On *nix systems, readline is used if available.
    """


def ord(*args, **kwargs): # real signature unknown
    """ Return the Unicode code point for a one-character string. """

 

二、命名规范

    • 做到“见名知意”
    • 只能包含 字母 数字 下划线  _ 
    • 不能以数字开头
    • 对字母大小写敏感
    • 一般不以下划线开头,下划线开头表示私有量

  1、变量  

    变量名尽量使用小写字母,如有多个单词,则用下划线隔开

# 简单变量
name = 'Jack'
# 多单词变量
teacher_name = 'Obama'

  2、常量

    常量全字母大写,如有多个单词,则用下划线隔开 

# 简单常量
PIE = 3.14
# 多单词常量
MAX_CONNECTION = 1000

  3、函数

    3.1 函数名一律全小,可用下划线分隔或直接连着写

# 简单函数名
def func1():
    pass


# 多单词函数名1
def showinfo():
    pass


# 多单词函数名2
def show_info():
    pass

    3.2 私有函数在函数名前面加一个下划线

class Person:
  
  # 私有函数
    def _private_func(self):
        pass

    3.3 当函数的功能是判断一个对象时,函数名前面加 is(使函数功能更清晰)

def isphone(phone):
        """判断手机号码是否为13 15 18开头"""
        result = re.search('[1][3|5|8][0-9]{9}$', phone).group()

  4、类名

    类名采用驼峰(CamelCase)命名风格,首字母大写,私有类可用一个下划线开头 

class Person:
    pass


class Student(Person):
    pass


# 私有类
class _PrivateFarm(Person):
    pass

  5、模块

     模块尽量使用全小写命名,尽量不要用下划线(除非多个单词,且数量不多的情况)

# 标准的模块名
import decoder
import html_parser

# 不推荐的模块名
import Decoder

 

转载于:https://www.cnblogs.com/tom-blogs/p/10584027.html

你可能感兴趣的:(python)