2400字整理Python编码规范

1个月前 (04-09 17:35)阅读35回复0
管理员
管理员
  • 管理员
  • 注册排名1
  • 经验值50
  • 级别管理员
  • 主题10
  • 回复0
楼主

对任何一门语言来说,学习编码规范都是第一要务,它制定了“游戏规则”,约束了我们的行动,我们只有在这个规则内编码才能被正确执行。想要写好Python代码,了解Python相关编码规范也是必要的。

接下来跟着我一起来了解一下吧~

1、解释型语言

Python 是一种解释型语言,不需要编译和链接,因此可以节省大量开发时间,但牺牲的是运行效率。

注:还有一种是编译型语言,比如C、Java等,需要有一个编译过程,编译成机器码执行,因此比解释型语言运行效率高,但开发调试没有解释型语言方便。



2、动态编程语言

由于Python是动态编程语言,所以在定义变量时并不需要事先指定变量的数据类型,变量的定义和初始化是同时进行的。Python解析器会根据初始化值的数据类型动态确定变量的类型。

注:与之对应的是静态编程语言,比如C、Java等,变量使用之前需要声明,且在其生命周期内不能改变!

举个栗子~

a = 1b = True
c = "hello world"print("a的数据类型:" ,type(a))print("b的数据类型:" ,type(b))print("c的数据类型:" ,type(c))c = 3.5print("c的数据类型:" ,type(c))

输出如下:



从输出结果可以看出,变量赋值时,相应的数据类型也已确定了。并且变量的数据类型是随时可以改变的,可以看到变量c先是字符串类型,后来变为浮点型,真是太灵活了!

3、字符编码

一般来说,Python的编码格式为UTF-8。但在Python2中,如果Python源码文件没有声明编码格式,Python解释器会默认使用ASCII编码,因此需要在开头统一加上编码格式声明。

# -- coding: utf-8 --

Python3 中字符默认编码是 UTF-8,所以无需再显示声明编码格式。

如果需要改成其他的编码格式,可以在Python源文件的第一行加上如下声明。

# -*- coding: gbk -*-



4、无需分号

在C、Java等大众编程语言中,需要在每个语句的末尾添加分号,但Python并非如此。Python奉行大道至简,你不需要添加不必要的字符和语法。在Python中,一条语句结束于一行的结尾(方括号,引号或括号除外)

a = 1print(a)

simple is best!



5、多行拼接

显示拼接行:两个及两个以上的物理行可用反斜杠(\)拼接为一个逻辑行。

if 1900 < year < 2100 and 1 <= month <= 12 \
   and 1 <= day <= 31 and 0 <= hour < 24 \
   and 0 <= minute < 60 and 0 <= second < 60:   # Looks like a valid date        return 1

以反斜杠结尾的行,不能加注释;反斜杠也不能拼接注释。

隐式拼接行:Python会将圆括号、中括号和花括号中的行隐式的连接起来。

圆括号、方括号或花括号以内的表达式允许分成多个物理行,无需使用反斜杠。例如:

number_names = ['1', '2', '3',     # 111
               '4', '5', '6']      # 222

隐式的行拼接可以带有注释。后续行的缩进不影响程序结构。后续行也允许为空白行。

6、缩进风格

与C、Java用 {}来定义代码块不同,Python使用缩进来区分不同的代码块,所以对缩进有严格要求。一般是以4个空格为缩进单位,相同逻辑层(同一个代码块)中的各行代码,缩进量必须一致。



我们来小试一下~

isPrint = Falseif isPrint:
    print("1")
    print("2")print("3")

可以看到,只会输出3:



再看一个栗子~

a = 1
    print(a)

运行出错:unexpected indent,print(a)属于单独代码块,需要顶格。



7、输入输出

学习一门语言,最有成就的就是看到程序跑通,输出“Hello world”。

Python中输入输出非常简单,常用的就是input()函数与print()函数。

print() 默认输出是换行的,如果要实现不换行需要在变量末尾加上end="";变量与字符串同时输出或多个变量同时输出时,需用, 隔开各项。

print("1")print("2的4次幂是", end="")print(2**4)



其实,end定义了语句结尾以什么符号分割。

input()接收一个字符串类型的参数,作为输入提示,返回值即用户在命令行中录入的值,不管用户录入什么数据,都会以字符串形式返回。

name = input("请输入你的名字:")print(name, type(name))age = input("请输入你的年龄:")print(age, type(age))



可以看到,即使我们输入了数字,输出的类型也还是字符串!

8、注释

编码过程中,注释必不可少,Python中主要有单行注释(#开头)与多行注释(3个单引号/双引号)

# 单行注释"""
多行注释"""'''
多行注释'''

9、空行

使用必要的空行可以增加代码的可读性,通常在顶级定义(如函数或类的定义)之间空两行,而方法定义之间空一行,另外在用于分隔某些功能的位置也可以空一行。

def say_hi():
    print("say hi")def print_hi(name=5):
    print("print hi")

10、制表符还是空格

强烈推荐仅使用空格而不用制表符,因为制表符和空格的不同会导致 Python 解释为两个不同的层次。



空格使用规则:

  • 在二元运算符两边各空一格,比如赋值(=)、比较(==, <, >, !=, <>, <=, >=, in, not in, is, is not), 布尔(and, or, not),算术操作符两边的空格可灵活使用,但两侧务必要保持一致

  • 不要在逗号、分号、冒号前面加空格,但应该在它们后面加(除非在行尾)

  • 函数的参数列表中,逗号之后要有空格

  • 函数的参数列表中,默认值等号两边不要添加空格

  • 左括号之后,右括号之前不要加添加空格

  • 参数列表, 索引或切片的左括号前不应加空格

  • 当'='用于指示关键字参数或默认参数值时,不要在其两侧使用空格

# 正确示例代码person(name[1], {addr: 2}, [])if x == 1:
    print x, y
x, y = y, x
a['key'] = list[index]def complex(real, imag=0.0): return magic(r=real, i=imag)# 错误示例代码:person( name[ 1 ] , { addr: 2 } , [ ] )if x == 1 :
    print x , y
x , y = y , x
a ['key'] = list [index]def complex(real, imag = 0.0): return magic(r = real, i = imag)

好在现在的IDE基本都能检查出来这些语法错误,并能够快速的标准格式化。

11、下划线

Python中下划线有着特殊的含义,总的来说有以下几点(其实挺烦的,毕竟下划线很难敲):

  • 变量名中如果以_开头,则表示为私有变量,仅允许类内部使用。

  • __在类名称前使用双下划线表示特殊变量,表示私有类。

  • _xxx_ 表示Python预留变量,如_init_()表示类的构造函数。

  • xxx_,以一个下画线结尾,一般用于避免与 Python 关键词的冲突。

12、命名规范

Python中的变量名要遵循一定的规则,如果违反,在运行Python的时候就会引发错误,一般要遵循以下原则:

  • 变量命名:变量只由小写字母、数字、下划线组成,且不能以数字开头,禁止使用其他字符;变量命名可以是大驼峰、小驼峰、下划线风格,只要整个项目统一命名规范即可。

ProductName = "AAA"     # 大驼峰
productName = "BBB"     # 小驼峰
_product_name = "CCC"   # 下划线
11productName = 11  	# 不能以数字开头
  • 常量:常量命名使用大写字母,下划线分隔。

MAX_COUNT = 10
  • 类命名:所有单词首字母大写,多个单词时,每个单词开头字母都要大写,私有类可用一个下划线开头。

class Farm():
    passclass AnimalFarm(Farm):
    passclass _PrivateFarm(Farm):
    pass
  • 函数命名:所有字母小写,多个单词时使用下划线连接,私有函数在函数前加一个下划线。

def run():     
    pass   


def run_with_env():     
    pass   


class Person():     
    def _private_func():         
        pass
  • 模块:模块的命名尽量是小写的,下划线分隔。

import osimport sys


本文可能转载于网络公开资源,如果侵犯您的权益,请联系我们删除。

本文地址:https://www.pyask.cn/info/3408.html

0
回帖

2400字整理Python编码规范 期待您的回复!

取消
载入表情清单……
载入颜色清单……
插入网络图片

取消确定

图片上传中
编辑器信息
提示信息