网站反向绑定域名,怎样做网站外链,海口网站制作企业,seo优化与sem推广有什么关系文章目录 前言一、项目文件事先做好归档二、永远不要手动修改源数据并且做好备份三、做好路径的正确配置四、代码必要的地方做好备注与说明五、加速你的Python循环代码六、可视化你的循环代码进度七、使用高效的异常捕获工具八、要多考虑代码健壮性关于Python技术储备一、Pytho… 文章目录 前言一、项目文件事先做好归档二、永远不要手动修改源数据并且做好备份三、做好路径的正确配置四、代码必要的地方做好备注与说明五、加速你的Python循环代码六、可视化你的循环代码进度七、使用高效的异常捕获工具八、要多考虑代码健壮性关于Python技术储备一、Python所有方向的学习路线二、Python基础学习视频三、精品Python学习书籍四、Python工具包项目源码合集①Python工具包②Python实战案例③Python小游戏源码五、面试资料六、Python兼职渠道 前言
我们在用Python进行机器学习建模项目的时候每个人都会有自己的一套项目文件管理的习惯我自己也有一套方法是自己曾经踩过的坑踩过的雷总结出来的现在在这里分享一下给大家因为很多伙伴是接触Python编程入门不久也希望大家少走弯路多少有些地方可以给大家借鉴。 一、项目文件事先做好归档
每次开始一个新工作的时候以前的我总是贪图方便Code、Data、文档都集中放在一个文件夹内看起来很乱一度让回溯过程十分痛苦或者是换了部电脑文件全都运行不行了需要自行修改路径十分痛苦。
经过自己一番探索大家可以大致将项目分成几个子文件夹code放在主文件夹里
二、永远不要手动修改源数据并且做好备份
我们需要对源数据进行好备份方便我们下一次进行回溯可以进行下一步的操作或者是对中间步骤的修改而且对代码等其他文件也是需要做好备份的以免出现意外丢失。
这里来自良许Linux 的一篇文章推荐了4个工具
Git版本控制系统Rsync文件备份Dropbox云存储Time Machine时光机器
更多的工具介绍和使用我这边就不展开大家可以去自行了解呗。
三、做好路径的正确配置
很多同学在写路径的时候都很喜欢直接用绝对路径虽然一般情况下不会有什么问题但如果代码共享给其他人学习或者运行的时候问题就来了很多情况下都不能直接跑通
这里建议
使用相对路径脚本位于主目录下其他资源如数据、第三方包等在其同级或低级目录下如 ./data/processed/test1.csv全局路径配置变量
# 设置主目录
HOME_PATH rE:ML90615- PROJECT1
# 读取数据
data open(HOME_PATH/data/processed/test1.csv)
data pd.read_csv(data)
data.head()四、代码必要的地方做好备注与说明
这个我相信大多数人都感同身受了不信拿回一个月前自己写的代码看看吧看一下能看懂多少如果没有做好备注说明的话
五、加速你的Python循环代码
这里推荐 云哥Python与算法之美的一篇文章24式加速你的python
收藏起来多看多几次养成好习惯呗这样子你写代码才会越来越快
六、可视化你的循环代码进度
这里介绍一个Python库tqdm先安装一下pip install tqdm
这个是一个可以显示循环进度的库有了它就可以更加运筹帷幄了。
大家可以看下面的例子
七、使用高效的异常捕获工具
异常bug定位以前的我经常也是一条print()函数走到底虽然说也没什么问题但效率上还是会比较慢后来发现了一个叫PySnooper的装饰器仿佛发现了新大陆。
我们一般debug都是在我们可能觉得会有问题的地方去打印输出看下实际输出了什么然后思考问题所在这需要我们去改code非常细致地改相比较直接加个装饰器是十分麻烦的。
大家可以看看Example
import pysnooper
pysnooper.snoop(./file.log)
def number_to_bits(number):if number:bits []while number:number, remainder divmod(number, 2)bits.insert(0, remainder)return bitselse:return [0]
number_to_bits(6)我们把函数每一步的输出都保存为file.log我们可以直接去看到底哪里出了问题。
项目地址https://github.com/cool-RR/pysnooper
八、要多考虑代码健壮性
何为代码的健壮性,顾名思义就是可以抵挡得住各种异常场景的测试异常处理工作由“捕获”和“抛出”两部分组成。“捕获”指的是使用 try … except 包裹特定语句妥当的完成错误流程处理。而恰当的使用 raise 主动“抛出”异常更是优雅代码里必不可少的组成部分下面总结几点供大家参考
1知道要传入的参数是什么,类型,个数 异常处理,逻辑判断
def add(a, b):if isinstance(a, int) and isinstance(b, int):return abelse:return 参数类型错误
print(add(1, 2))
print(add(1, a))2只做最精准的异常捕获
我们有的时候想着让脚本work才是王道所以不管三七二十一就搞一个大大的try…except把整块代码包裹起来但这样很容易把原本该被抛出的 AttibuteError 吞噬了。从而给我们的 debug 过程增加了不必要的麻烦。
所以我们永远只捕获那些可能会抛出异常的语句块而且尽量只捕获精确的异常类型而不是模糊的 Exception。
from requests.exceptions import RequestException
def save_website_title(url, filename):try:resp requests.get(url)except RequestException as e:print(fsave failed: unable to get page content: {e})return False
# 这段正则操作本身就是不应该抛出异常的所以我们没必要使用 try 语句块
# 假如 group 被误打成了 grop 也没关系程序马上就会通过 AttributeError 来
# 告诉我们。
obj re.search(rtitle(.*)/title, resp.text)
if not obj:print(save failed: title tag not found in page content)return False
title obj.group(1)
try: with open(filename, w) as fp:fp.write(title)
except IOError as e:print(fsave failed: unable to write to file {filename}: {e})return False
else:return True3异常处理不应该喧宾夺主 像上一条说到的异常捕获要精准但如果每一个都很精准的话其实我们的代码里就会有很多try…except语句块以至于扰乱核心代码代码整体阅读性。
这里我们可以利用上下文管理器来改善我们的异常处理流程简化重复的异常处理逻辑。
class raise_api_error:
captures specified exception and raise ApiErrorCode instead
:raises: AttributeError if code_name is not validdef __init__(self, captures, code_name):self.captures capturesself.code getattr(error_codes, code_name)
def __enter__(self):# 该方法将在进入上下文时调用return self
def __exit__(self, exc_type, exc_val, exc_tb):# 该方法将在退出上下文时调用# exc_type, exc_val, exc_tb 分别表示该上下文内抛出的# 异常类型、异常值、错误栈if exc_type is None:return Falseif exc_type self.captures:raise self.code from exc_valreturn False在上面的代码里我们定义了一个名为 raise_api_error 的上下文管理器它在进入上下文时什么也不做。但是在退出上下文时会判断当前上下文中是否抛出了类型为 self.captures 的异常如果有就用 APIErrorCode 异常类替代它。
使用上下文管理器后简洁的代码如下
def upload_avatar(request):用户上传新头像
with raise_api_error(KeyError, AVATAR_FILE_NOT_PROVIDED):avatar_file request.FILES[avatar]
with raise_api_error(ResizeAvatarError, AVATAR_FILE_INVALID),raise_api_error(FileTooLargeError, AVATAR_FILE_TOO_LARGE):resized_avatar_file resize_avatar(avatar_file)
with raise_api_error(Exception, INTERNAL_SERVER_ERROR):request.user.avatar resized_avatar_filerequest.user.save()
return HttpResponse({})关于Python技术储备
学好 Python 不论是就业还是做副业赚钱都不错但要学会 Python 还是要有一个学习规划。最后大家分享一份全套的 Python 学习资料给那些想学习 Python 的小伙伴们一点帮助 CSDN大礼包《Python入门资料实战源码安装工具】免费领取安全链接放心点击 一、Python所有方向的学习路线
Python所有方向的技术点做的整理形成各个领域的知识点汇总它的用处就在于你可以按照上面的知识点去找对应的学习资源保证自己学得较为全面。
二、Python基础学习视频
② 路线对应学习视频
还有很多适合0基础入门的学习视频有了这些视频轻轻松松上手Python~在这里插入图片描述
③练习题
每节视频课后都有对应的练习题哦可以检验学习成果哈哈 因篇幅有限仅展示部分资料
三、精品Python学习书籍
当我学到一定基础有自己的理解能力的时候会去阅读一些前辈整理的书籍或者手写的笔记资料这些笔记详细记载了他们对一些技术点的理解这些理解是比较独到可以学到不一样的思路。
四、Python工具包项目源码合集
①Python工具包
学习Python常用的开发软件都在这里了每个都有详细的安装教程保证你可以安装成功哦
②Python实战案例
光学理论是没用的要学会跟着一起敲代码动手实操才能将自己的所学运用到实际当中去这时候可以搞点实战案例来学习。100实战案例源码等你来拿
③Python小游戏源码
如果觉得上面的实战案例有点枯燥可以试试自己用Python编写小游戏让你的学习过程中增添一点趣味
五、面试资料
我们学习Python必然是为了找到高薪的工作下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料并且有阿里大佬给出了权威的解答刷完这一套面试资料相信大家都能找到满意的工作。
六、Python兼职渠道
而且学会Python以后还可以在各大兼职平台接单赚钱各种兼职渠道兼职注意事项如何和客户沟通我都整理成文档了。 这份完整版的Python全套学习资料已经上传CSDN朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】