变量
一言以蔽之:可以变化的量
name = "纯二"
print(name) # 纯二
name = "Amigo"
print(name) # Amigo
常量
一言以蔽之:不会变化的量
python中本没有常量的概念,但是约定俗成使用全部大写变量名去定义常量
一般看到这种变量名,尽量(约定俗成)不要去修改。
MAX_CONNECTIONS = 5000
注释
注释一般是对程序的解释说明,原则上应该通俗易懂。
# 不推荐的注释
# 去掉 s 两边的空格,再处理
value = process(s.strip())
# 优秀的注释
# 用户输入可能会有空格,使用 strip 去掉空格
username = extract_username(input_string.strip())
注释的常见写法
# 用户输入可能会有空格,使用 strip 去掉空格
user_name = input("Enter your username:").strip()
'''
爬虫常用步骤
1.分析目标网站
2.获取数据
3.存储数据到本地
'''
"""
爬虫常用步骤
1.分析目标网站
2.获取数据
3.存储数据到本地
"""
变量命名规范
1. 描述性强
# 描述性弱的名字:看不懂在做什么
value = process(s.strip())
# 描述性强的名字:尝试从用户输入里解析出一个用户名
username = extract_username(input_string.strip())
2. 遵循PEP8原则
3. 尽量简短
4. 要匹配类型
布尔值(bool)是一种很简单的类型,它只有两个可能的值:“是(True)”或“不是(False)”。因此,给布尔值变量起名有一个原则:一定要让读到变量的人觉得它只会有“肯定”和“否定”两种可能。举例来说,is
、has
这些非黑即白的词就很适合用来修饰这类名字。
下面的表内有一些更详细的例子:
变量名 | 含义 | 说明 |
---|---|---|
is_superuser |
是否是超级用户 | 是 / 不是 |
has_errors |
有没有错误 | 有 / 没有 |
allow_empty |
是否允许空值 | 允许 / 不允许 |
nullable |
是否可以为 null | 可以 / 不可以 |
匹配 int/float 类型的名字
当人们看到和数字有关的名字时,自然就会认定它们是 int
或 float
类型。这些名字可被简单分为以下几种常见类型:
- 释义为数字的所有单词,比如:
port(端口号)
、age(年龄)
、radius(半径)
等 - 使用
_id
结尾的单词,比如:user_id
、host_id
- 使用
length/count
开头或者结尾的单词,比如:length_of_username
、max_length
、users_count
最好别拿一个名词的复数形式来作为
int
类型的变量名,比如apples
、trips
等。因为这类名字,会和那些装着Apple
和Trip
的普通容器对象(List[Apple]、List[Trip])相混淆。为了避免混淆,我建议用number_of_apples
或trips_count
这种复合词来作为int
类型的名字。
5. 超短命名
在众多变量名里,有一类名字非常特别,那就是只有一两个字母的短名字。这些短名字一般可分为两类,第一类是那些大家约定俗成的短名字,比如:
- 数组索引三剑客
i
、j
、k
- 某个整数
n
- 某个字符串
s
- 某个异常
e
- 文件对象
fp
我并不反对使用这类短名字,自己也经常用,因为它们写起来的确很方便。但如果条件允许,我还是建议尽量用更精确的名字替代它们。比如,在表示用户输入的字符串时,用 input_str
替代 s
总是会更明确一些。
另一类短名字,则是对一些其他常用名的缩写。比如,在使用 Django 框架做国际化内容翻译时,常常会用到 gettext
方法。为了方便,我们常会把 gettext
缩写成 _
来使用:
from django.utils.translation import gettext as _
print(_('待翻译文字'))
如果你在项目中发现有一些长名字会重复出现,那你也可以效仿上面的方式,为这些长名字设置一些短名字作为别名。这样可以让代码变得更紧凑,更好读。但同一个项目内的超短缩写不宜太多,否则效果就会适得其反。
命名其它技巧
- 在同一段代码内,不要出现多个相似的变量名,比如同时使用
users
、users1
、users3
这种序列 - 你可以尝试用换词来简化复合变量名,比如用
is_special
来代替is_not_normal
- 如果你苦思冥想都想不出一个合适的名字,请打开 GitHub[4],到其他人的开源项目里找找灵感吧。