Python面试题之编码规范
程序员文章站
2024-02-13 20:50:28
...
目录
阅读源
什么是 PEP8
PEP是 Python Enhancement Proposal 的缩写,翻译过来就是 Python增强建议书
简单说就是一种编码规范,是为了让代码“更好看”,更容易被阅读
具体可参考:
https://www.python.org/dev/peps/pep-0008/
什么是 Python 之禅
import this
什么是文档字符串
Python有一个很奇妙的特性,称为 文档字符串 ,它通常被简称为 docstrings 。DocStrings是一个重要的工具,由于它帮助你的程序文档更加简单易懂,你应该尽量使用它。你甚至可以在程序运行的时候,从函数恢复文档字符串。
使用魔法方法'__doc__'可以打印docstring的内容
函数注解
def add(x:int, y:int) -> int:
return x + y
用 : 类型 的形式指定函数的参数类型,用 -> 类型 的形式指定函数的返回值类型
Python 命名规范
命名规范:
1. 变量名只能是字母、数字和下划线的任意组合;
2. 变量名只能以字母或下划线开头;
3. 变量名禁止使用关键字
4. 变量名区分大小写
命名风格:
风格一:驼峰体(大驼峰式)
类
风格二:下划线
普通变量、全局变量
命名约定:
1. 变量名不要使用中文和拼音(为了国际化)
2. 变量名要有意义
(1) 列表:xxx_list / xxx_ls
(2) 元组:xxx_tuple / xxx_tp
(3) 字符串:xxx_str / xxx_s1 / xxx_s2
(4) 单个字符:xxx_ch
(5) 字典:xxx_dict / xxx_dc
(6) 集合:xxx_set
(7) x、y、z:用来表示浮点型
(8) 除了(7)以外的字符,都表示整数,尤其是i、j、k、m、n
3. 尽量避免单字符名称,用于计数器和迭代器除外
4. 普通变量用小写字母,单词之间用 _分隔
5. 全局变量全用大写字母,单词之间用 _分隔
6. 关于变量的“Internal”和“Public”
Internal(以_或者__及以上开头的变量)表示仅模块内使用或者在类中是保护或私有的
Public,非Internal变量
Type Public Internal
模块 lower_with_under _lower_with_under
包 lower_with_under
类 CapWords(大驼峰式) _CapWords
异常类 CapWords
函数 lower_with_under() _lower_with_under()
全局/类常量 CAPS_WITH_UNDER _CAPS_WITH_UNDER
全局/类变量 lower_with_under _lower_with_under
实例变量 lower_with_under _lower_with_under (protected) or
__lower_with_under (private)
方法 lower_with_under _lower_with_under (protected) or
__lower_with_under (private)
函数/方法参数 lower_with_under
局部变量 lower_with_under
关于下划线的命名约定
1. 单领先下划线
例如:
_var
含义:
指示变量供内部使用。通常不由Python解释器强制执行(通配符导入除外)仅作为程序员的提示
2. 单尾拖尾下划线
例如:
var_
含义:
避免与Python的关键字命名冲突
3. 双重领先下划线
例如:
__var
含义:
指示变量在类的上下文中是私有的。由Python解释器强制执行(触发名称修改)
4. 双重领先和尾随下划线
例如:
__var__
含义:
表示Python语言定义的特殊方法。避免这种命名方案为自己的属性
5. 单下划线
例如:
_
含义:
用作临时或者无意义变量的名称(不关心)
Python 注释有几种
单行注释,多行注释,docstring注释
如何优雅地给一个函数加注释
"""这一行:函数(函数、方法、生成器)是做什么的(函数的作用)概述
这一行:对函数详细的描述
Args: / :params 参数名字: (__表示两个空格,节的内容都应该缩进2个空格)
__参数名字: 类型,含义(含义,如果>80 chars,则使用2或4个空格悬挂缩进)
__*args: 描述args
__*kwargs: 描述kwargs
Returns: / Yields:
__类型,含义,还可以举例(如果返回为None,可以省略)
Raises:
__IOError: An error occurred accessing the bigtable.Table object.
"""
如何优雅地给一个类加注释
"""这一行:类是做什么的(类的作用)概述
这一行:对类详细的描述
Attributes: (如果类包含公共属性的话,文档字符串需要书写一个Attributes段)
__sports: 类型,含义
__computers: 类型,含义
"""
Python 代码缩进中是否支持 Tab 和空格混用
支持,Python 并没有强制要求你用Tab或者用空格缩进,
但根据 PEP8 规范,不要使用Tab来缩进,也更不要Tab和空格混用,
推荐4个半角空格。
是否可以在一句 import 中导入多个库
可以的
import json,random,requests
但根据 PEP8 ,导入应该独占一行
给 Python 文件命名时需要注意什么
全小写,单词之间使用下划线分隔
列举几个规范 Python 代码风格的工具
pylint,black,pycharm也带有pep8的代码规范工具