python变量命名规则与规范(约定)

python变量命名规则与规范(约定)引子前些日子 大大的一位友友问了我一个问题 表示了对命名规范的不解 确实如此关于命名规范有一套相对严谨而复杂的理论 大大在此特就 python 的变量 以及函数和对象 命名规则与规范进行讲述 规则规则很简单 我在此也就写在前面 并且一笔带过 相信在看的朋友也不会有疑问 python 变量必须由数字 字母 下划线 0 9a zA Z 组成 严格区分大小写 规范性质与意义在此为了分清规则与规范的区别 特别需要指出规则的性质 规则简洁明了 命名正确与否由编译器检查 也就是说 如果命名不符合

引子

前些日子,大大的一位友友问了我一个问题,表示了对命名规范的不解。确实如此关于命名规范有一套相对严谨而复杂的理论,大大在此特就python的变量(以及函数和对象)命名规则与规范进行讲述。

规则

规则很简单,我在此也就写在前面,并且一笔带过,相信在看的朋友也不会有疑问。

python变量必须由数字、字母、下划线(0-9a-zA-Z_)组成,严格区分大小写。

规范

性质与意义

在此为了分清规则与规范的区别,特别需要指出规则的性质。规则简洁明了,命名正确与否由编译器检查,也就是说,如果命名不符合规则,代码是跑不起来的。规则则不同,我将它概括为“程序员的自我规范”,它属于一种自我意识或者说自觉,不符合规范的程序运行起来依然没有任何问题。

那么我们就需要提到命名规范的意义了。命名规范有两方面的意义:一、使变量意义一目了然;二、表面变量的用途。这些会在后面提到;三、程序员之间的交流,良好的代码习惯有利于团队合作。

声明

命名规范实际并不统一,有时也不必过度纠结规范,保留其本质的用途即可,在一些细节上存在偏差,如果作者有什么遗漏或者错误,可以在评论区留言。

驼峰写法与下划线写法

这两种写法根据习惯选一即可,它的意义便是使变量意义一目了然。

下划线写法:所有字母小写,特殊缩写词汇可大写,所有单词之间使用下划线连接,如:is_ascii,get_abs_save_path()。

驼峰写法:首字母小写,之后每个单词首字母大写连接,如:isAscii,getAbsSavePath()。

根据习惯python变量常使用下划线写法。如果你先前习惯于驼峰写法,保留使用也无妨。

根据变量的用途

全局变量以及函数参数:标准下划线写法或者使用驼峰写法。

局部变量:以下划线开始,用来区分于全局变量,避免与外部变量冲突、混淆。如:_filepath。在对象中用作隐藏属性或行为。

系统变量:以双下划线开始,如:__name__,__hash__()。在对象中用作受保护属性或行为,拒绝外部调用。

常量:全大写下划线写法,python并没有真正意义上的常量,而是使用一个永远不被赋值的变量代替,常量的特殊写法在python中尤其重要。

函数:标准下划线写法。

对象:首字母大写的驼峰写法。

特殊习惯

一、使用“2”代替“to”,用的是谐音,不仅数字“2”在变量中尤其显眼,而且省略了两条下划线,使用非常普遍。

二、使用“7”代替“and”,因为数字“7”在键盘的Shift位是“&”,与“2”效果类同,使用较少。

三、散装英语,如果你某天你遇到了看不懂的变量,试试拼词或者找到形式高度相似的变量类比,事实上它很常见简洁并且好用。

四、拼音,这单词我不认识?它可能是个拼音。

五、中文,在规则中没有提到,python另外支持非ASCII码最为变量组成部分,可以使用中文做为变量名,但是这显得太不专业并且出于中文输入法的低效极少数人使用。

放在最后

以上就是全部内容,还要提醒在看的小白们千万不要吝啬变量的长度,IDE都支持代码补全,不会因此多大几个字,20字符的变量都是正常的。

 

 

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

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

(0)
上一篇 2026年3月17日 下午6:33
下一篇 2026年3月17日 下午6:33


相关推荐

  • 复位信号 rst

    复位信号 rstaltera的触发器是低电平触发,所以建议使用rst_n,xilinx的触发器是高电平触发,所以建议使用rst,如果是rst_n,则会增加额外的非逻辑xilinx推荐:由于rst是一个高扇出网络,所以要尽量减少rst的使用,扇出太大会导致时序收敛困难。参考:https://blog.csdn.net/maowang1234588/article/details/103510605根据ff初始值和敏感信号列表中是否有rst(异步触…

    2022年10月1日
    6
  • Android应用程序开发以及背后的设计思想深度剖析

    Android应用程序开发以及背后的设计思想深度剖析原文链接:http://www.uml.org.cn/mobiledev/201211063.asp#2初步过了一下,很多地方写得还是比较深入的,先转载,后面再仔细看看。 本文内容,主题是透过应用程序来分析Android系统的设计原理与构架。我们先会简单介绍一下Android里的应用程序编程,然后以这些应用程序在运行环境上的需求来分析出,为什么我们的Android系统需要今天这样的设

    2022年6月20日
    40
  • 36氪| 中国企服软件金榜-项目管理软件排名揭晓

    36氪| 中国企服软件金榜-项目管理软件排名揭晓36氪企服点评榜单,不看资本,不看厂商,不看专家,只看数据近日,由36氪企服点评主办的中国企服软件金榜-项目管理系列榜单发布,榜单根据产品「用户满意度」与「市场表现」两项关键指标,由36氪独创算法得出,排除了人为因素对预评分以及排序结果的影响。Worktile和PingCode从上百个项目管理类产品中脱颖而出,斩获多项荣誉:Worktile荣登中国企服软件金榜: 项目管理系列榜单总榜Top1 最佳易用性Top2 最佳满意度Top1 细分领域项目管理榜单-通用协.

    2022年5月30日
    48
  • FilterDispatcher处理流程「建议收藏」

    FilterDispatcher处理流程「建议收藏」org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter前身是:org.apache.struts2.dispatcher.FilterDispatcher请求被web.xml中定义的过滤器拦截。3层过滤器处理:ActionContextCleanUp,其他过滤器(OtherFilters,SiteM…

    2022年8月16日
    11
  • 使用Python读取照片的GPS信息

    使用Python读取照片的GPS信息

    2022年2月13日
    41
  • java linkhashset_java中集合怎么定义

    java linkhashset_java中集合怎么定义LinkedHashSet是Set集合的一个实现,具有set集合不重复的特点,同时具有可预测的迭代顺序,也就是我们插入的顺序。并且linkedHashSet是一个非线程安全的集合。如果有多个线程同时访问当前linkedhashset集合容器,并且有一个线程对当前容器中的元素做了修改,那么必须要在外部实现同步保证数据的冥等性。下面我们new一个新的LinkedHashSet容器看一下具体的源码实现。…

    2022年10月12日
    6

发表回复

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

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