python中的变量命名规则

python中的变量命名规则ThereareonlytwohardthingsinComputerScience:cacheinvalidationandnamingthings.在计算机科学领域只有两件难事:缓存失效和给东西起名字变量用的好或不好,和代码质量有着非常重要的联系,合理的使用变量,可以让你的代码可读性更高并且更加简洁。python中的变量命名规则1.变量命名2.变量命名的描述性3.变量名尽量短,但是不要太短4.合理使用变量5.变量定义尽量靠近使用6.合理使用namedtuple/

大家好,又见面了,我是你们的朋友全栈君。

There are only two hard things in Computer Science: cache invalidation and naming things.
在计算机科学领域只有两件难事:缓存失效 和 给东西起名字

变量用的好或不好,和代码质量有着非常重要的联系,合理的使用变量,可以让你的代码可读性更高并且更加简洁。

1.变量命名

1)命名的规范性

变量名可以包括字母、数字、下划线,但是数字不能做为开头。

系统关键字不能做变量名使用

除了下划线之个,其它符号不能做为变量名使用 !

Python的变量名是除分大小写的

2)编程语言常用驼峰命名法

大驼峰:每一个单词的首字母都大写 FirstName LastName

小驼峰:第一个单词以小写字母开始,后续单词的首字母大写 firstName lastName

但是在python中一般使用小驼峰加下划线的方式

  • has_error
  • is_person

2. 变量命名的描述性

在接受范围内,变量名所描述的内容越精准越好。

  • BAD: day, host, cards, temp
  • GOOD: day_of_week, hosts_to_reboot, expired_cards

变量名能让人猜出类型。

例如: Bool 类型

  • is_user : 是否是用户

例如: int/float 类型

  • port:端口号
  • age:年龄

这些很直观的能让人猜出类型。

注意: 不要使用复数来表示一个 int 类型变量,比如 apples,最好用 number_of_apples来替代

3.变量名尽量短,但是不要太短

一个好的变量名,长度应该控制在两到三个单词左右

例如,person_index

同一段代码内不要使用过于相似的变量名,比如同时出现 users、users1、 user3。

不要使用带否定含义的变量名,用 is_special 代替 is_not_normal。

4.合理使用变量

同一个变量名指代的变量类型,也需要保持一致性。

在一个函数中,一个变量名叫做 photo, 那么在其他地方就不要改成image。

5. 变量定义尽量靠近使用

刚开始学习编程时,我们习惯把定义的变量放在开头,或一些函数最前面。如下

def get_name():
	students = []
	teachers = []

这样的方式虽然看起来很简洁,但是对代码可读性没有帮助,更好的做法是,让变量定义尽量靠近使用。

6. 合理使用namedtuple/dict

Python中的函数可以返回多个值,如果某一天我们想让函数再多返回一个值怎么办呢?

#之前
def get_name():
	return student, teacher
	
#现在
def get_name():
	return student, teacher, parent

namedtuple/dict 此时可以派上用场

#1. 使用dict
def get_name():
	return { 
   
	'student': student, 
	'teacher':teacher, 
	'parent' :parent
	}
names_dict = get_name()
# 2. 使用 namedtuple
from collections import namedtuple

Names = namedtuple("Names", ['student', 'teacher', 'parent'])

def get_name():
	return Names(
	student = student,
	teacher = teacher,
	parent = parent
	)

names = get_name()

但是这样不能像之前一样,每一次解包多变量接受函数返回值。

6. 控制单个函数内的变量数量

当某一函数过长时,或者包含太多变量时,请及时把它拆分成多个小函数。

7. 删除掉没用的变量

在一个函数中,如果某一个定义的变量没有被用到,请及时删除它。

8. 定义临时变量提高可读性


if student.is_active and (student.sex == 'female'):
    student.add_tolist()
    return

#把上面的例子变成如下
student_is_eligible = student.is_active and (student.sex == 'female')

if student_is_eligible:
    student.add_tolist()
    return

需要合理运用临时定义对象,把不必要的东西赋值成临时变量反而会让代码显得啰嗦!

9. The Zen of Python

最后分享一下 Zen of Python 准则。

The Zen of Python

漂亮总比难看好。
显性比隐性好。
简单比复杂好。
复杂比复杂好。
平的比嵌套的好。
疏比密好。
可读性。
特殊情况并不特别到足以打破规则。
尽管实用性胜过纯洁。
错误不应该悄无声息地过去。
除非显式地沉默。
面对模棱两可,拒绝猜测的诱惑。
应该有一种——最好只有一种——明显的方法来做这件事。
除非你是荷兰人,否则这种方式一开始可能并不明显。
现在做总比不做好。
虽然永远不做总是比现在好。
如果实现很难解释,那就不是一个好主意。
如果实现易于解释,那么它可能是个好主意。
名称空间是一个很棒的主意——让我们做更多这样的事情吧!

reference: python工匠

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/138509.html原文链接:https://javaforall.net

(0)
上一篇 2022年5月31日 上午11:20
下一篇 2022年5月31日 上午11:20


相关推荐

  • 详解单调队列算法

    详解单调队列算法前言如果你对这篇文章可感兴趣,可以点击「【访客必读-指引页】一文囊括主页内所有高质量博客」,查看完整博客分类与对应链接。在上一篇文章中,我们介绍了「单调栈」这一最常考察的线性数据结构。而今天我们将继续沿着这个思路,介绍另一个与其“齐名”的线性数据结构,即「单调队列」。「单调队列」在「数据结构」题中的分布较为广泛,且常被当作优化「动态规划」的一种重要手段,因此该算法在面试中考察的频率较高,属于必知必会的知识点。队列首先我们来回忆一下「队列」。「队列」是一种「先进先出」的线性数据结构,其中元素

    2022年6月25日
    23
  • 怎么用matlab画心形曲线方程,matlab画心形曲线「建议收藏」

    怎么用matlab画心形曲线方程,matlab画心形曲线「建议收藏」Matlab绘制三维动态心形It’sOKtosendapicto…Matlab绘制三维动态心形It’sOKtosendapicto…(x,y1,’-r’,x,y2,’-.k’,’linewidth’,2)8、绘制心形图r=2(1-cosθ)的极坐标图形>>theta=[0:0.01:2*pi];>>polar(theta,…

    2022年10月16日
    7
  • C++ rapidjson 基础入门

    C++ rapidjson 基础入门此篇文章中对于 rapidjson 的使用方法基本上来源于 rapidjson 中文使用手册 rapidjson 的基本介绍 使用好处 解析速度等不在此篇讲述 因为在官网上已经讲得非常详细了 这里写的都是本人拙劣的见解 如有不足之处 烦请各位指出 本文结构 1 基本单元 2 构建 3 增 4 删 5 查 6 改 7 输出 8 拷贝 9 总结 1 基本单元 rapidjson 的基本操作单元 Document 以及 Value 例 当有

    2026年3月19日
    2
  • 保姆级部署指南——Mac/Windows双平台30分钟搞定OpenClaw

    保姆级部署指南——Mac/Windows双平台30分钟搞定OpenClaw

    2026年3月14日
    3
  • 升级Mac Catalina后OBS录屏软件麦克风和内置声音输出没有声音的问题[通俗易懂]

    升级Mac Catalina后OBS录屏软件麦克风和内置声音输出没有声音的问题[通俗易懂]升级MacCatalina后,OBS录屏软件录制的视频,电脑内置声音输出,以及麦克风输入声音都没有。使用网上搜到的soundflower工具也不行。后来找到如下命令临时解决。在终端输入如下命令:open/Applications/OBS.app/Contents/MacOS/OBS–args-picture每次使用OBS,都需要用上述方法。直接打开OBS的不行,需要等OBS…

    2022年5月15日
    182
  • android开发笔记之SwipeRefreshLayout

    android开发笔记之SwipeRefreshLayoutSwipeRefreshLayout简介SwipeRefrshLayout是Google官方更新的一个控件,可以实现下拉刷新的效果,该控件集成自ViewGroup在support-v4兼容包下.在android源码中,主要是在联系人界面刷新联系人数据:packages/apps/Contacts/src/com/android/contacts/list/DefaultContactBrow…

    2022年6月25日
    30

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号