变量常量以及注释

发布时间 2023-11-24 16:10:38作者: 纯二

变量

一言以蔽之:可以变化的量
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)”。因此,给布尔值变量起名有一个原则:一定要让读到变量的人觉得它只会有“肯定”和“否定”两种可能。举例来说,ishas 这些非黑即白的词就很适合用来修饰这类名字。

下面的表内有一些更详细的例子:

变量名 含义 说明
is_superuser 是否是超级用户 是 / 不是
has_errors 有没有错误 有 / 没有
allow_empty 是否允许空值 允许 / 不允许
nullable 是否可以为 null 可以 / 不可以
匹配 int/float 类型的名字

当人们看到和数字有关的名字时,自然就会认定它们是 intfloat 类型。这些名字可被简单分为以下几种常见类型:

  • 释义为数字的所有单词,比如:port(端口号)age(年龄)radius(半径)
  • 使用 _id 结尾的单词,比如:user_idhost_id
  • 使用 length/count 开头或者结尾的单词,比如: length_of_usernamemax_lengthusers_count

最好别拿一个名词的复数形式来作为 int 类型的变量名,比如 applestrips 等。因为这类名字,会和那些装着 AppleTrip 的普通容器对象(List[Apple]、List[Trip])相混淆。为了避免混淆,我建议用 number_of_applestrips_count 这种复合词来作为 int 类型的名字。

5. 超短命名

在众多变量名里,有一类名字非常特别,那就是只有一两个字母的短名字。这些短名字一般可分为两类,第一类是那些大家约定俗成的短名字,比如:

  1. 数组索引三剑客 ijk
  2. 某个整数 n
  3. 某个字符串 s
  4. 某个异常 e
  5. 文件对象 fp

我并不反对使用这类短名字,自己也经常用,因为它们写起来的确很方便。但如果条件允许,我还是建议尽量用更精确的名字替代它们。比如,在表示用户输入的字符串时,用 input_str 替代 s 总是会更明确一些。

另一类短名字,则是对一些其他常用名的缩写。比如,在使用 Django 框架做国际化内容翻译时,常常会用到 gettext 方法。为了方便,我们常会把 gettext 缩写成 _ 来使用:

from django.utils.translation import gettext as _

print(_('待翻译文字'))

如果你在项目中发现有一些长名字会重复出现,那你也可以效仿上面的方式,为这些长名字设置一些短名字作为别名。这样可以让代码变得更紧凑,更好读。但同一个项目内的超短缩写不宜太多,否则效果就会适得其反。

命名其它技巧

  • 在同一段代码内,不要出现多个相似的变量名,比如同时使用 usersusers1users3 这种序列
  • 你可以尝试用换词来简化复合变量名,比如用 is_special 来代替 is_not_normal
  • 如果你苦思冥想都想不出一个合适的名字,请打开 GitHub[4],到其他人的开源项目里找找灵感吧。