python代码怎么写出色_如何编写高质量的Pythonic风格代码

每一种语言都有它的编程风格,打个比方就像各种菜系,粤菜,川菜,淮扬菜每一种都有自己的独特风格.Python的开发者用Pythonic这个词来形容那种符合python风格的代码.这种pythonic风格的代码,既不是非常严格的规范,也不是编辑器强加给开发者的规则,它是大家在python语言的过程中指定的一种指南,一种协同工作过逐渐形成的习惯.宗旨就是直观,简洁而容易读.

1,避免只使用大小写来区分不同的对象

比如a是一个数值类型的变量,而A是String类型,虽然在编码的过程中容易区分二者的含义,但是没有啥用,它不会给其他阅读代码的人带来多少便利.

2,避免使用容易混淆的名称

不要用内建的函数名来表示其他含义的名称,没有构建新的数据类型的情况下使用类似element,list,dict等作为变量名.不要使用o(字符O的小写,很容易以为是数值0),长的太像了,1(字母L的小写,也和数值1容易混淆),

变量名最好和你要解决的问题联系起来.

3.不要害怕过长的变量名

有的时候为了让程序更容易理解和阅读,长一点的变量名是必须的,有的同学说长的变量名要敲好多次,怎么办,没有关系.现在很多编辑器都有代码自动提示,这都不是事.

比如下面的 person_info比pi的可读性要强很多:

person_info={'name':'zhang san','IDCard':'200123','address':'Num 100,Xihu Road'}

4.多看看源码,学习别人的优秀代码风格

照猫画虎是一个比较快的学习过程.特别是业界比较公认的Pythonic代码,比如web框架里面比较有名的Flask或者requests,蛮经典的是一个比较好的理解pythonic风格代码的精髓.

5.利用一个神器,比如PEP8

这是一个关于Python编码风格的指南,全称叫"Python Enhancement Proposal #8" 它列出了很多细节包含了一些对代码的布局,注释,命名的要求,

(如果对PEP8有兴趣的同学可以留言,我会单独开个章节讲一下PEP8里面的变量,函数,参数,类,模块和包)。若你能遵守这些原则,就很容易些出pythonic的代码。

需要先下载一个 pep8 ,敲pip install -U pep8。

然后用它来检测一些自己的代码 ,就一目了然了.

$ pep8 --first MyPython.py

MyPython.py:1:36: E231 missing whitespace after ','

MyPython.py:31:6: E225 missing whitespace around operator

MyPython.py:118:80: E501 line too long (85 > 79 characters)

MyPython.py:120:1: W191 indentation contains tabs

MyPython.py:123:38: W291 trailing whitespace

MyPython.py:141:42: E203 whitespace before ':'

MyPython.py:144:57: E202 whitespace before ')'

MyPython.py:150:1: E303 too many blank lines (5)

MyPython.py:306:35: W292 no newline at end of file

往期热门系列文章:

Python心得和技巧:

数据分析和爬虫:

更多原创的精彩干货可以去公众号【菜鸟学Python】找我们。目前原创近400个趣味原创案例(Python入门,进阶,经验技巧,爬虫,数据分析,机器学习,面试经验等),欢迎来公众号找我们交流!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
目标检测(Object Detection)是计算机视觉领域的一个核心问题,其主要任务是找出图像中所有感兴趣的目标(物体),并确定它们的类别和位置。以下是对目标检测的详细阐述: 一、基本概念 目标检测的任务是解决“在哪里?是什么?”的问题,即定位出图像中目标的位置并识别出目标的类别。由于各类物体具有不同的外观、形状和姿态,加上成像时光照、遮挡等因素的干扰,目标检测一直是计算机视觉领域最具挑战性的任务之一。 二、核心问题 目标检测涉及以下几个核心问题: 分类问题:判断图像中的目标属于哪个类别。 定位问题:确定目标在图像中的具体位置。 大小问题:目标可能具有不同的大小。 形状问题:目标可能具有不同的形状。 三、算法分类 基于深度学习的目标检测算法主要分为两大类: Two-stage算法:先进行区域生成(Region Proposal),生成有可能包含待检物体的预选框(Region Proposal),再通过卷积神经网络进行样本分类。常见的Two-stage算法包括R-CNN、Fast R-CNN、Faster R-CNN等。 One-stage算法:不用生成区域提议,直接在网络中提取特征来预测物体分类和位置。常见的One-stage算法包括YOLO系列(YOLOv1、YOLOv2、YOLOv3、YOLOv4、YOLOv5等)、SSD和RetinaNet等。 四、算法原理 以YOLO系列为例,YOLO将目标检测视为回归问题,将输入图像一次性划分为多个区域,直接在输出层预测边界框和类别概率。YOLO采用卷积网络来提取特征,使用全连接层来得到预测值。其网络结构通常包含多个卷积层和全连接层,通过卷积层提取图像特征,通过全连接层输出预测结果。 五、应用领域 目标检测技术已经广泛应用于各个领域,为人们的生活带来了极大的便利。以下是一些主要的应用领域: 安全监控:在商场、银行
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值