-
Python
程序代码总结
90
条建议
如果你也在学
Python
,准备要学习
Python
,希望这篇文章对你有用。
1.
首先
建议
1
、理解
Pythonic
概念—
-
详见
Python
中的《
Python<
/p>
之禅》
建议
2
、编写
Pythonic
代码
(
1
)
避免不规范代码,
比如只用大小写区分变量、
使用容易混淆的变量名、
害怕过长变量名等。有时候长的变量名会使代码更加具有可读性。
(
2
)
深入学习
p>
Python
相关知识,
比如语言特性、
库特性等,
比如
Python
演变过程等。
深入学习一两个业内公认的
p>
Pythonic
的代码库,
比如
Flask
等。
建议
3
:理解
Python
与
C
的不同之处,比如缩进与
{}
,单引号双引号,
三元操作符?,
Switch-Case
语句等。
建议
4
:在代码中适当添加注释
建议<
/p>
5
:适当添加空行使代码布局更加合理
建议
6
:编写函数的
< br>
4
个原则
(
1
)函数设计要尽量短小,嵌套层次不宜过深
(
2
)函数声明应
该做到合理、简单、易用
(
3
)函数参数设计应该考虑向下兼容
(
4
)一个函数只做一件事,尽量保证函数粒度的一致性
建议
7
:将常量集中在一个
文件,且常量名尽量使用全大写字母
2.
编程惯用法
建议
8
:利用
assert
语句来发现问题,但要注意,断言
assert
会影响效
率
建议
9
:数据交换值时不推荐使用临时变量,而是直接
a, b = b, a
建议
10
:充分利用惰性计算(
Lazy evalua
tion
)的特性,从而避免不必要
的计算
建议
11
:
理解枚举替代实现的缺陷
(最新版
Python
中已经加入了枚举特
性)
建议
12
:不推荐使用
type
来进行类型检查,因为有些时候
type
的结果
并不一定可靠。如果
有需求,建议使用
isinstance
函数来代替
建议
13
:
尽量将变量转化为浮点类型后再做除法
(
Python3
以后不用考虑)
建议
14
:警惕
eval()
函数
的安全漏洞,有点类似于
SQL
注入
建议
1
5
:使用
enumerate()
同时获取序列迭代的索引和值
建议<
/p>
16
:分清
==
和
is
的适用场景,特别是在比较字符串等不可变类型
变量时(详见评论)
建议
17
:
尽量使用
Unicode
。
在
Python2
中编码是很让人头痛的一件事,
但
Python3
就不用过多考虑了
建议
18
:构建合理的包层次来管理<
/p>
Module
3.
基础用法
建议
19
:有节制的使用
from
…
import
语句,防止污染命名空间
建议
20
:优先使用
absolute import
来导入模块(
Python3
中已经移除
了
relative import
)
建议
21
:
i+=1
不等于
++i
,在
Python
中,
++i
前边的加号仅表示正,
不表示操作
<
/p>
建议
22
:习惯使用
with
自动关闭资源,特别是在文件读写中
建议
23
:使用
else
子句简化循环(异常处理)
建议
24
:遵循异常处理的几点基本原
则
(
1
)注
意异常的粒度,
try
块中尽量少写代码
(
2
)谨慎使用单独的
except
语句,或
except Exception
语句,而是
定位到具体异常
(
3
)注意异常捕获的顺序,在合适的层次处理
异常
(
4
)
使用更加友好的异常信息,遵守异常参数的规范
建议
25
:避免
finally
中可能发生的陷阱
建议
26
:深入理解
< br>
None
,正确判断对象是否为空。
建议
27
:连接字符串应优先使用
p>
join
函数,而不是
+
操作
建议
28
:格式化字符串时尽量使用
format
函数,而不是
%
形式
建
议
29
:区别对待可变对象和不可变对象,特别是作为函数参数
时
建议
30
:
[], {}
和
()
:一致的容器初始化形式。使用列表解析可以使代码更
清晰,同时效率更高
p>
建议
31
:函数
传参数,既不是传值也不是传引用,而是传对象或者说对象
的引用
建议
32
:警惕默认参数潜在的问
题,特别是当默认参数为可变对象时
建议
33
:函数中慎用变长参数
args
和
kargs
(
1
)这种使用太灵活,从而使得函数签名不够清晰,可读性较差
(
2
)如果因为函数参数过多而是
用变长参数简化函数定义,那么一般该函
数可以重构
建议
34
:深入理解
str()
和
repr()
的区别
(
1
)两者之间的目标不同:
str
主要面向客户,其目的是可读性,返回形
式为用户友
好性和可读性都比较高的字符串形式;
而
repr
是面向
Python
解释器或者说
Pyth
on
开发人员,其目的是准确性,其返回值表示
Python
解释器内部的定义
<
/p>
(
2
)在解释器中直接输入变量,默认调
用
repr
函数,而
print(va
r)
默认调
用
str
< br>函数
(
3
)
repr
函数的返回值一般可以用
eval
函数来还原对象
(
4
)两者分别调用对象的内建函数
__str__
()
和
__repr__
()
建议
35
:
分清静态方法
staticmethod
和类方法
classmethod
的使用场
景
4.
库的使用
建议
36
:掌握字符串的基本用法
建议
37
:按需选择
< br>
sort()
和
sorted()
函数
sort()
是列表在就地进行排序,所以不能排序元组等不可变类型。
sorted()
可以排序任意的可迭代类型,同时不改变原变量本身。
建议
38
:使用
co
py
模块深拷贝对象,区分浅拷贝(
shallow
copy
)和深
拷贝(
deep
copy
)
-
-
-
-
-
-
-
-
-
上一篇:美国股票市场上市的中国公司一览表
下一篇:R精编色卡色号颜色对照表