python 判断字符串为空_从菜鸟Python程序员成长为大牛Python程序员的10条建议(附教程)...

f5a988de21693a70e049b181fe1f0142.png

  1.先让程序跑起来  当我们刚开始写一个程序的时候,无论是一个自动化脚本,还是一个小游戏,还是一个爬虫,还是一个模块,对于新手来说最简单的方法就是先work:  用最直接的方法,让程序先能work.  比如直接用函数写,直接用假的变量,先把程序运行起来  运行正常的逻辑,让程序跑通  
2.初步重构代码  当你的代码已经初步run起来之后,接着我们要对代码进行简单的梳理和整形,会从下面几个地方修剪修剪:  变量名,函数名字的重构  函数的状态要不要有返回值  if else这样的嵌套太多,考虑提取  函数进行提取和重构,每个函数的功能单一原则  函数的参数有没有考虑缺省值  全局变量,有没有大写,有没有写在开头  
3.增加注释  很多同学不太爱写注释,觉得麻烦。如果这个代码就你一人用,或者说这个代码很短,确实可以不写!  如果这个代码有几千行,并且会多个人合作开放,后续还要扩展功能,那么你花5分钟来写注释,未来会帮你节省5个小时的维护时间!  代码首先是给人看的,然后才是给机器运行的!  
4.一定要考虑异常  代码跑的好好的,看起来没有问题,是不是很有成就感!  如果是爬虫,你把网络断了,看看有没有异常处理  如果是文件,你把句柄改成None看看有没有问题  如果取列表里面的item,当你获得列表为空,会发生什么  所有的这一切,你有没有考虑到异常,有没有考虑到程序的健壮性。  要考虑异常分支,if 里面有没有else的情况  for里面如果出现了错误,有没有break  判断list[],需要看一下这个列表是否为空  文件读写,有没有try/except  拿到一个句柄,比如SSH,SQL,这样有没有考虑到句柄的有效性  
5.添加配置文件  我们刚从把局部变量,提到了全局变量。现在我们需要把这个全局变量放到一个配置文件里面,把实现和接口分离,降低耦合度。对于用户来说只要改配置文件就行了。如果有想学想转行的朋友可以进IT交流q裙哦 这里有大神 也有小白 也有刚刚跟你一样经历过 现在已经做上IT工作的前辈 大家相互学习 相互交流 《49 **6零三吧 649》 一定要 进裙备注:亚索 要不管理员会不加你的。  比如可以把整个的全局变量放到一个config.py里面,然后在主程序里面用from config import * 这样的话,对后续的修改方便很多。  
6.测试用例很重要  程序虽然写好了,不管你的程序是几十行的小程序小脚本,还是几千上万行的项目,测试用例是一定要设计。  简单的程序可以设一些断言assert,看一些有无异常,对于复杂的逻辑,一定要针对性的设计多个分支回路来测一下代码。  
7.日志模块很重要  Python的代码很多都是在服务区上运行的,你总不能一直都是print吧,尤其是对大型的程序,没有日志怎么行,建议用logging模块进行日志的记录。  
8.性能上的优化  如果你处理的任务仅仅是几百上千,对性能要求不高,对实时性要求不高那还好。如果你要处理几十万条数据呢!  这个时候一定要考虑并发的处理,到底是用多进程,还是多线程,线程池,还是用协程,需要思考!  当然性能上的优化并不单是单线程变多线程,还有数据结构的优化,比如什么时候该用列表,什么时候用元组,哪一种对内存消耗少,查询快。  
9.再次重构,函数变类  为了让我们的代码更加易于扩展,适应变化!我们需要用类把变量和函数进行封装,设计一些接口,那些是对外开发的,那些是对外封闭的。  哪些用静态函数包裹,哪些用实例方法。是不是需要用一些装饰器来简化代码。  相同类别的函数,进行整合,合并要一个类里面。  多个功能用多个类来表示,方便维护和扩展。  类与类之间,考虑他们的内在关系。用组合还是继承,用一些简单的设计模式,根据程序的特性用比如工厂模式,观察者。  
10.代码检查  代码到这里应该是比较优美了,等一下是不是忘记了一个很重要的东西,我们有没有遵循PEP8的代码风格。  比如命名规范,每一行的长度,看似是细节,但是很多时候细节决定成败。为啥不用这个神器检查一下Pylint库,它能快速帮你查缺补漏。如何快速学习?2020,最新Python零基础到精通资料教材,干货分享,新基础Python教材,稳稳找到过万工作,看这里,这里有你想要的所有资源哦,最强笔记,教你怎么入门提升!让你对自己更加有信心,重点是资料都是免费的,免费!!!获取方式:私信小编 “ 学习 ”,即可免费获取!

9b7466ad43b88d02b7a28a7c17b10c60.png
ad41401ecbc05e656bef7f31e62e5d27.png

章节1:Python入门1:Python介绍_特性_版本问题_应用范围2:Python下载_安装_配置_第一行Python程序3:开发环境介绍_交互模式的使用_IDLE介绍和使用4:IDLE开发环境的使用_建立Python源文件5: Python程序格式_缩进_行注释_段注释6:简单错误如何处理_守破离学习法_程序员修炼手册7:海龟绘图_坐标系问题_画笔各种方法8:海龟绘图_画出奥运五环图

43f180a389da08c8371909da3924f45a.png
23016b7c39e92b59a165c208d954dbff.png

章节2:编程基本概念9:程序的构成10:对象的基本组成和内存示意图11:引用的本质_栈内存和堆内存_内存示意图12:标识符_帮助系统的简单使用_命名规则13:变量的声明_初始化_删除变量_垃圾回收机制14:链式赋值_系列解包赋值_常量15:内置数据类型_基本算术运算符16:整数_不同进制_其他类型转换成整数17:浮点数_自动转换_强制转换_增强赋值运算符18:时间表示_unix时间点_毫秒和微秒_time模块19:多点坐标_绘出折线图_计算两点距离20:布尔值_比较运算符_逻辑运算符_短路问题21:同一运算符_整数缓存问题22:字符串_unicode字符集_三种创建字符串方式_len()23:字符串_转义字符_字符串拼接_字符串复制_input()获得键盘输入24:字符串_str()_使用[]提取字符_replace()替换生成新字符串_内存分析25:字符串_切片slice操作_逆序26:字符串_split()分割_join()合并_join()效率测试27:字符串_驻留机制_内存分析_字符串同一判断_值相等判断28:字符串_常用查找方法_去除首位信息_大小写转换_排版29:字符串_format格式化_数字格式化操作30:可变字符串_io.StringIO31:运算符总结_位操作符_优先级问题

e00a08d891ca3962fbfd5134155eb1bd.png
8ce0a6dd21ef84ddebd0cad0afdf9a1f.png

章节3:序列32:列表_特点_内存分析33:创建列表的4种方式_推导式创建列表34:列表_元素的5种添加方式_效率问题35:列表_元素删除的三种方式_删除本质是数组元素拷贝36:列表_元素的访问_元素出现次数统计_成员资格判断37:列表_切片slice操作38:列表_排序_revered逆序_max_min_sum39:列表_二维列表_表格数据的存储和读取40:元组_特点_创建的两种方式_tuple()要点41:元组_元素访问_计数方法_切片操作_成员资格判断_zip()42:元组_生成器推导式创建元组_总结43:字典_特点_4种创建方式_普通_dict_zip_formkeys44:字典_元素的访问_键的访问_值的访问_键值对的访问45:字典_元素的添加_修改_删除46:字典_序列解包用于列表元组字典47:字典_复杂表格数据存储_列表和字典综合嵌套48:字典_核心底层原理_内存分析_存储键值对过程49:字典_核心底层原理_内存分析_查找值对象过程50:集合_特点_创建和删除_交集并集差集运算

6bcefb2c231d8df2fabd65e2058390d4.png
208f97c1dfc463415cb76eb22d1580ca.png

章节4:控制语句51:Pycharm开发环境的下载安装配置_项目创建和运行52:单分支选择结构_条件表达式详解53:双分支选择结构_三元运算符的使用详解54:多分支选择结构55:选择结构的嵌套56:while循环结构_死循环处理57:for循环结构_遍历各种可迭代对象_range对象58:嵌套循环59:嵌套循环练习_九九乘法表_打印表格数据60:break语句61:continue语句62:else语句63:循环代码优化技巧(极其重要)64:zip()并行迭代65:推导式创建序列_列表推导式_字典推导式_集合推导式_生成器推导式66:综合练习_绘制不同颜色的多个同心圆_绘制棋盘

c3130c920f1412a044388559fb29f83c.png
3568e6d310960c218cdb1c8448f48404.png

章节5:函数67:函数的基本概念_内存分析_函数的分类_定义和调用68:形参和实参_文档字符串_函数注释69:返回值详解70:函数也是对象_内存分析71:变量的作用域_全局变量_局部变量_栈帧内存分析讲解72:局部变量和全局变量_效率测试73:参数的传递_传递可变对象_内存分析74:参数的传递_传递不可变对象_内存分析75:浅拷贝和深拷贝_内存分析76:参数的传递_不可变对象含可变子对象_内存分析77:参数的类型_位置参数_默认值参数_命名参数78:参数的类型_可变参数_强制命名参数79:lambda表达式和匿名函数80:eval()函数用法81:递归函数_函数调用内存分析_栈帧的创建82:递归函数_阶乘计算案例83:嵌套函数_内部函数_数据隐藏84:nonlocal_global85:LEGB规则

18e1759a3ce301f7efd86f742fc736cb.png
ace14dea540f455006c8c7c01a76e195.png
efbb2ebc1b76dd3cdb886f2903fb2b90.png

章节6:面向对象编程86:面向对象和面向过程的区别_执行者思维_设计者思维87:对象的进化故事88:类的定义_类和对象的关系89:构造函数__init__90:实例属性_内存分析91:实例方法_内存分析方法调用过程_dir()_isinstance92:类对象93:类属性_内存分析创建类和对象的底层94:类方法_静态方法_内存分析图示95: __del__()析构方法和垃圾回收机制96:__call__()方法和可调用对象97:方法没有重载_方法的动态性98:私有属性99:私有方法100:@property装饰器_get和set方法101:面向对象的三大特征说明(封装、继承、多态)102:继承103:方法的重写104:object根类_dir()105:重写__str__()方法106:多重继承107:mro()108:super()获得父类的定义109:多态110:特殊方法和运算符重载111:特殊属性112:对象的浅拷贝和深拷贝_内存分析113:组合114:设计模式_工厂模式实现以上这些教程小编已经为大家打包准备好了,不全面找我希望对正在学习的你有所帮助!获取方式:私信小编 “ 学习 ”,即可免费获取!小编回复的可能比较慢,喜欢小编的可以关注支持一下,谢谢大家支持!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值