关于python中带下划线的变量和函数 的意义,class类带一个下划线和带两个下划线的定义

总结:
变量:
1.  前带_的变量:  标明是一个私有变量, 只用于标明, 外部类还是可以访问到这个变量
2.  前带两个_ ,后带两个_ 的变量:  标明是内置变量,
3.  大写加下划线的变量:  标明是 不会发生改变的全局变量
函数:
1. 前带_的变量: 标明是一个私有函数, 只用于标明,
2.  前带两个_ ,后带两个_ 的函数:  标明是特殊函数
Python 的代码风格由 PEP 8 描述。这个文档描述了 Python 编程风格的方方面面。在遵守这个文档的条件下,不同程序员编写的 Python 代码可以保持最大程度的相似风格。这样就易于阅读,易于在程序员之间交流。


1 变量

常量 : 大写加下划线
USER_CONSTANT
对于不会发生改变的全局变量,使用大写加下划线。

私有变量
 : 小写和一个前导下划线
_private_value
Python 中不存在私有变量一说,若是遇到需要保护的变量,使用小写和一个前导下划线。但这只是程序员之间的一个约定,用于警告说明这是一个私有变量,外部类不要去访问它。但实际上,外部类还是可以访问到这个变量。

内置变量 : 小写,两个前导下划线和两个后置下划线
__class__
两个前导下划线会导致变量在解释期间被更名。这是为了避免内置变量和其他变量产生冲突。用户定义的变量要严格避免这种风格。以免导致混乱。


2 函数和方法

总体而言应该使用,小写和下划线。但有些比较老的库使用的是混合大小写,即首单词小写,之后每个单词第一个字母大写,其余小写。但现在,小写和下划线已成为规范。

私有方法 : 小写和一个前导下划线
def _secrete(self):
    print "don't test me."

这里和私有变量一样,并不是真正的私有访问权限。同时也应该注意一般函数不要使用两个前导下划线(当遇到两个前导下划线时,Python 的名称改编特性将发挥作用)。特殊函数后面会提及。

特殊方法 : 小写和两个前导下划线,两个后置下划线

def __add__(self, other):
    return int.__add__(other)

这种风格只应用于特殊函数,比如操作符重载等。

函数参数 : 小写和下划线,缺省值等号两边无空格

def connect(self, user=None):
    self._user = user



3 类

类总是使用驼峰格式命名,即所有单词首字母大写其余字母小写。类名应该简明,精确,并足以从中理解类所完成的工作。常见的一个方法是使用表示其类型或者特性的后缀,例如:
SQLEngine
MimeTypes

对于基类而言,可以使用一个 Base 或者 Abstract 前缀
BaseCookie
AbstractGroup

class UserProfile(object):
    def __init__(self, profile):
        return self._profile = profile

    def profile(self):
        return self._profile



4 模块和包

除特殊模块 __init__ 之外,模块名称都使用不带下划线的小写字母。
若是它们实现一个协议,那么通常使用lib为后缀,例如:
import smtplib

import os
import sys



5 关于参数

5.1 不要用断言来实现静态类型检测
断言可以用于检查参数,但不应仅仅是进行静态类型检测。 Python 是动态类型语言,静态类型检测违背了其设计思想。断言应该用于避免函数不被毫无意义的调用。

5.2 不要滥用 *args 和 **kwargs
*args 和 **kwargs 参数可能会破坏函数的健壮性。它们使签名变得模糊,而且代码常常开始在不应该的地方构建小的参数解析器。


6 其他

6.1 使用 has 或 is 前缀命名布尔元素

is_connect = True
has_member = False


6.2 用复数形式命名序列

members = ['user_1', 'user_2']


6.3 用显式名称命名字典

person_address = {'user_1':'10 road WD', 'user_2' : '20 street huafu'}


6.4 避免通用名称
诸如 list, dict, sequence 或者 element 这样的名称应该避免。

6.5 避免现有名称
诸如 os, sys 这种系统已经存在的名称应该避免。


7 一些数字
一行列数 : PEP 8 规定为 79 列,这有些苛刻了。根据自己的情况,比如不要超过满屏时编辑器的显示列数。这样就可以在不动水平游标的情况下,方便的查看代码。

一个函数 : 不要超过 30 行代码, 即可显示在一个屏幕类,可以不使用垂直游标即可看到整个函数。
一个类 : 不要超过 200 行代码,不要有超过 10 个方法。
一个模块 不要超过 500 行


8 验证脚本

可以安装一个 pep8 脚本用于验证你的代码风格是否符合 PEP8。

>>easy_install pep8

>>pep8 -r --ignoire E501 Test.py

这个命令行的意思是,重复打出错误,并且忽略 501 错误(代码超过 79 行)。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/479130.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Android官方开发文档Training系列课程中文版:高效显示位图之位图缓存

原文地址:http://android.xsoftlab.net/training/displaying-bitmaps/cache-bitmap.html 往UI界面中加载单张图片的过程是很简单的,然而如果需要在某个时刻同时加载大量的图片,那么这事情就有些复杂了。在很多情况下,比如使用了L…

论文浅尝 | ICLR2020 - 基于组合的多关系图卷积网络

论文笔记整理:吴锐,东南大学计算机学院硕士。来源:ICLR 2020链接:https://arxiv.org/pdf/1911.03082.pdf动机目前针对于GCN的研究大多数都关注在学习无向图的结点表示上,然而我们在研究中更常见的通常是多关系图&#…

Hades:移动端静态分析框架

只有通过别人的眼睛,才能真正地了解自己 ——《云图》 背景 作为全球最大的互联网 生活服务平台,美团点评近年来在业务上取得了飞速的发展。为支持业务的快速发展,移动研发团队规模也逐渐从零星的小作坊式运营,演变为千人级研发军…

GitHub超级火!任意爬取,超全开源爬虫工具箱

文 | 程序员GitHub最近国内一位开发者在 GitHub 上开源了个集众多数据源于一身的爬虫工具箱——InfoSpider,一不小心就火了!!!有多火呢?开源没几天就登上GitHub周榜第四,标星1.3K,累计分支 172 …

Android官方开发文档Training系列课程中文版:高效显示位图之管理位图内存

原文地址:http://developer.android.com/training/displaying-bitmaps/manage-memory.html 除了在上一节中描述的步骤之外,还有一些细节上的事情可以促进垃圾回收器的回收及位图的复用。其推荐的策略取决于Android的目标版本。示例APP BitmapFun展示了如…

Pytorch与tensorflow模型转换

使用pytorch_pretrained_bert将tensorflow模型转化为pytorch模型:https://blog.csdn.net/sunyueqinghit/article/details/103458365/ bert_config.json bert_model.ckpt.data-00000-of-00001 bert_model.ckpt.index bert_model.ckpt.meta vocab.txt 比如&#xff…

LeetCode 413. 等差数列划分(DP)

1. 题目 一个数列的等差数列子数组有多少个。 A [1, 2, 3, 4]返回: 3, A 中有三个子等差数组: [1, 2, 3], [2, 3, 4] 以及自身 [1, 2, 3, 4]。2. 解题 状态公式 if(A[i]−A[i−1]A[i−1]−A[i−2]),thendp[i]dp[i−1]1,i>2if (A[i]-A[i-1] A[i-1]-A[i-2]) , \quad then \…

技术动态 | 针对复杂问题的知识图谱问答最新进展

本文转载自公众号:PaperWeekly。作者:付彬、唐呈光、李杨、余海洋、孙健单位:阿里巴巴达摩院小蜜Conversational AI团队背景介绍知识图谱问答(KBQA)利用图谱丰富的语义关联信息,能够深入理解用户问题并给出…

百度提出新冠高风险小区预警算法,AAAI21收录!

编:夕小瑶几个月前,小屋推送了一期上帝视角看新型冠状病毒(COVID-19)对公众出行影响的顶会论文解读——《这篇顶会paper,讲述了疫情期间憋疯的你和我》,这篇有趣的paper来自百度地图团队,发表在…

搜狗地图2016-Android-社招笔试题(包含Java基础部分)

下面是搜狗地图的社招笔试题,由于条件有限,全是手机拍的,请将就着看。另请忽略上面的答案,不一定准确。 大伙可在下方讨论答案,上方答案仅供参考,不一定准确。

机器学习常用的算法整理:线性回归、逻辑回归、贝叶斯分类、支持向量机、K-means聚类、决策树、随机森林以及常用的应用场景整理

什么是机器学习? 机器学习是计算机利用已有的数据(经验)得出了某种模型,并利用这些模型预测未来的一种方法。这个过程其实与人的学习过程极为相似,只不过机器是一个可以进行大维度数据分析而且可以不知疲倦地学习的“怪兽”而已。 具体的机器…

新一代数据库TiDB在美团的实践

1. 背景和现状 近几年,基于MySQL构建的传统关系型数据库服务,已经很难支撑美团业务的爆发式增长,这就促使我们去探索更合理的数据存储方案和实践新的运维方式。而随着分布式数据库大放异彩,美团DBA团队联合基础架构存储团队&#…

我在哥大读博的五年

文 | Mike Shou知乎(ID:Showthem)本文已获作者授权,禁止二次转载0. 写在前面「 开始写这边总结的时候是三月,纽约成了疫情震中,看着新闻报道里的中央公园,中国城,第五大道,往事浮现&…

Android官方开发文档Training系列课程中文版:高效显示位图之在UI中展示位图

原文地址:http://android.xsoftlab.net/training/displaying-bitmaps/display-bitmap.html 这节课会将前面的知识点整合到一起,展示如何使用后台线程、位图缓存来加载多张图片到ViewPager或者GridView中,并会涉及并发处理及配置更改的相关知…

论文浅尝 | AAAI2020 - 多分量图卷积协同过滤方法

论文笔记整理:郝凯龙,南京大学硕士。来源:AAAI2020链接:https://arxiv.org/pdf/1911.10699.pdf动机推荐系统实际上是在做用户-商品二部图上的链路预测,仅仅用用户-商品之间的单一购买关系无法精确的进行描述为什么购买…

from torchcrf import CRF

报错CRF函数有问题,多了一个参数。通过源代码查找,发现两个torchcrf。通过pip list安装的时候是大写的TorchCRF,所以导入包的时候肯定也写大写的,没想到报错,后来改成全小写的就对了。

LeetCode 312. 戳气球(DP,难)

1. 题目 有 n 个气球,编号为0 到 n-1,每个气球上都标有一个数字,这些数字存在数组 nums 中。 现在要求你戳破所有的气球。每当你戳破一个气球 i 时,你可以获得 nums[left]∗nums[i]∗nums[right]nums[left] * nums[i] * nums[ri…

美团即时物流的分布式系统架构设计

本文根据美团资深技术专家宋斌在ArchSummit架构师峰会上的演讲整理而成。 背景 美团外卖已经发展了五年,即时物流探索也经历了3年多的时间,业务从零孵化到初具规模,在整个过程中积累了一些分布式高并发系统的建设经验。最主要的收获包括两点&…

Android官方开发文档Training系列课程中文版:OpenGL绘图之环境配置

原文地址:http://android.xsoftlab.net/training/graphics/opengl/index.html 引言 Android framework层为创建绚丽的功能性UI提供了大量的标准工具。然而,如果想要以更多方式来控制屏幕的绘制,或者在三维图形中绘制,那么就需要…

中文常用停用词表(哈工大停用词表、百度停用词表

中文常用停用词表(哈工大停用词表、百度停用词表等:https://github.com/goto456/stopwords