python开发中容易犯的错误整合
写在前面
长期更新的博文。多数是一些比较隐蔽的问题。欢迎留言补充。
pip并不是那么安逸
pip安装对于开发者来说确实是一种解放。可以自动安装依赖包,但执行最简单的pip安装命令时,并不是所有的依赖都会安装。有一些是模块可选择的,比如gunicorn在选择异步框架时。有一些因为调用的层次较多,忽视了,最后pip还是会提醒缺少一些依赖。留心每次安装的结尾。
import时名称相同/相似(但实际模块不同)
近几年出现了较多次针对python供应链的黑客攻击之后,python官方对模块进行了规范,其中包括在pypi中搜索模块时,模块主页上都会有一个安装命令,明确告知安装它的时候该使用什么。
有些是因为升级。比如使用beautifulsoup,虽然名字是叫beautifulsoup,但是它目前对应的模块叫做beautifulsuop4。
还有库存在重名冲突导致产生问题。假如通过阅读import的内容去安装一个模块,之后运行会提示模块中没有代码中的函数或者变量。查看模块源代码确实没有,但是运行的代码同样也不会错,陷入怀疑人生。典型的就是加密库中的cipher,一个是cipher,另一个叫pycipher。但是导入的是同一个名字:cipher。
错误地import了自定义的模块
在新建py文件的时候,可能是因为自己的脑海中反复考虑想着代码功能,然后就以代表程序功能的单词来命名为文件了。import导入的时候,是会引入同目录下的文件的,如果import的名字原本是要调用某个模块的,但是自己编写的函数又起了同样了名字,解释器就会把当前目录下自己写的这个函数编译导入进来。
非常明显的特征:文件夹下出现了一个和.py同名的.pyc文件。
尝试修改字符串
可能是先学了c、java等语言,然后余孽未消,将它们对数组的定义和思维带入到了python中来。python字符串不支持直接修改,修改字符串的某一位或者某几位,需要靠拼接的方法。也是涉及重建一个字符串对象。
is和==不相同
比较值的时候使用==,比较地址的时候使用is。
判定为空列表的时候可以是使用A == [],但是如果使用A is [],即便先前赋值A = [],返回的结果也是False。
字符串拼接的时候使用+
由于python字符串不可变,每次使用+进行拼接,产生的结果都要在内存中新建一个对象来放置这个新生成的字符串,所以大量拼接操作的性能低下。可以使用内置的join()方法来替代+进行字符串拼接。
python开发中容易犯的错误整合的更多相关文章
- javascript中易犯的错误有哪些
javascript中易犯的错误有哪些 一.总结 一句话总结: 比如循环中函数的使用 函数中this的指向谁(函数中this的使用) 变量的作用域 1.this.timer = setTimeout( ...
- Python开发最常犯错误总结10种
不管是在学习还是工作过程中,人都会犯错.虽然Python的语法简单.灵活,但也一样存在一些不小的坑,一不小心,初学者和资深Python程序员都有可能会栽跟头.本文是Toptal网站的程序员梳理的10大 ...
- android开发中常犯的几个错误整理
新手程序猿,在开发中难免会犯各种各样的错误,以下是整理的一些android开发中常见的错误,一起来看看吧. 1.避免将多个类放在一个文件夹里面,除非是一次性使用的内部类. 就是一个文件,最好给分它同名 ...
- Python 字典一个易犯的错误
一个易犯的错误,关于 Python 的传值(对于不可变量) 和 传引用(对于可变量),浅拷贝和深拷贝.废话不多说,看例子, 直接改变可变字典值,失败, >>> dic = dict. ...
- Vue CLI 3开发中屏蔽的EsLint错误 (.eslintrc.js 在vue3+中 修改这个)
1.关闭eslint校验有了eslint的校验,可以来规范开发人员的代码,是挺好的.但是有些像缩进.空格.空白行之类的规范,在开发过程中一直报错,未免太过于苛刻了.所以,我还是会选择关闭eslint校 ...
- AngularJS 开发中常犯的10个错误
简介 AngularJS是目前最为活跃的Javascript框架之一,AngularJS的目标之一是简化开发过程,这使得AngularJS非常善于构建小型app原型,但AngularJS对于全功能的客 ...
- 饮冰三年-人工智能-Python-30 python开发中常见的错误
1:触发条件:创建的实体类生成到数据库表时报错 报错信息:TypeError: __init__() missing 1 required positional argument: 'on_delet ...
- 工作的思考十七:工作中容易犯的错误 - Delay
其实IT是一个很严谨的行业,不管是从代码角度还是从日常的工作分配都是按计划来的. 从今年年初到现在,在我的工作中出现了两次“Delay”,第一次不以为然,虽然上司也找过我谈话,但没意识到问题的严重性. ...
- python开发中常用的框架
以下是15个最受欢迎的Python开源框架.这些框架包括事件I/O,OLAP,Web开发,高性能网络通信,测试,爬虫等. Django: Python Web应用开发框架 Django 应该是最出名的 ...
随机推荐
- CSS3 -- 动画库
http://www.jq22.com/yanshi819 文件结构: html <!DOCTYPE html> <html lang="zh-CN"> & ...
- CSS+transform画动态表情
先给大家看下画完后是什么样子: 代码看这里: html代码: <body> <div class="emoji emoji_like"> <div c ...
- Unity3D 面试ABC
最先执行的方法是: 1.(激活时的初始化代码)Awake,2.Start.3.Update[FixUpdate.LateUpdate].4.(渲染模块)OnGUI.5.再向后,就是卸载模块(TearD ...
- Unity3D 记第一次面试
事情是发生在2014-03-05 周三下午 在群里面看到上海艺游急聘Unity3D开发工程师,就整理了下简历投了去!直到接到电话通知我去面试才知道 我之前是有投了简历!太忙了 以至于真的忘了,不过那个 ...
- Unity3D笔记十八 GL图像库
1.绘制2D图像的时需要使用GL.LoadOrtho()方法来将图形映射到平面中. 2.所有绘制相关的内容都要写在OnPostRender()方法中. 3.有关GL图像库的脚本需要绑定到Hierarc ...
- AngularJS初始(一)
什么是AngularJs? angularjs是一个为动态WEB应用设计的结构框架.它能让你使用HTML作为模板语言,通过扩展HTML的语法,让你能更清楚.简洁地构建你的应用组件.它的创新点在于,利用 ...
- 利用 bugly 分析应用崩溃
Bugly-Crash监控能让我们及时的掌控应用的Crash,并快速修复.这种情况就在于我们把应用发布出去了,但是用户那边有着各种各样我们想象不到的系统崩溃,我们无法通过简单的控制台捕获错误信息和崩溃 ...
- POJ2387-Till the cows come home【最短路】
A - Til the Cows Come Home POJ - 2387 Bessie is out in the field and wants to get back to the barn t ...
- Minimalist GNU for Windows
MinGW | Minimalist GNU for Windows http://www.mingw.org/ MinGW, a contraction of "Minimalist GN ...
- 单表行数超过 500 万行或者单表容量超过 2GB,才推荐进行分库分表。
https://github.com/alibaba/p3c/blob/master/阿里巴巴Java开发手册(详尽版).pdf 单表行数超过 500 万行或者单表容量超过 2GB,才推荐进行分库分表 ...