都说Python执行效率不高,为什么还要学习它?

就像你买了一辆汽车,有人却说, 汽车开的比飞机慢多了,买什么汽车啊。 然而,生活中大部分的场合,用汽车比用飞机方便的多。

同样的道理通常你开发的程序(自动化工具、网站后端等),Python的执行效率完全足够了。

如果一定要比执行效率,谁都比不过 二进制机器代码, 为什么程序员 不直接写 二进制机器代码 呢?

很多时候, 更重要的是看 开发效率 。

Python最大的优势是 开发效率 高 。

同样的系统,用Python 开发通常比用其他语言 所需的时间 少的多。 (这是在 对语言的熟练度相同 的情况下 的对比)

通常Python 开发一个项目 10天, 其他语言或许要 15 - 30天。

开发的速度快,这有多么重要,大家都能明白。

最后我们再来看 执行效率

Python 执行效率真的低吗?

要看写的代码做的什么事情。

就拿代码常见的字符串处理来说,Python官方解释器底层就是C语言开发的,本身就经过了大量地优化。

普通的 C程序员,水平有限,对字符串处理没有特别的优化,写出的程序 或许比 Python 效率更低。

Python很多的库,比如字符串处理、加解密、科学计算、人工智能,底层都是C语言开发的,执行效率并不低。

Python慢的地方在于 解释器对 语言逻辑代码的 解释执行速度 相对比较慢, 如果这些并不是你的程序中 最耗费时间的部分,Python语言就不会成为你程序的主要瓶颈。

你的程序真的需要那么高的执行效率的吗?

就拿开发网站服务来说 , 网站后端的性能瓶颈 通常在 数据库操作。

假设我们开发一个web服务

如果有一个请求的处理,假设java代码执行要0.01毫秒, python代码 要0.05毫秒, java比Python快5倍,对吧?

但是处理这个请求还要访问数据库, 这个操作和使用什么编程语言无关,java和Python花费的时间确是一样的,都要50毫秒。

这样 java的服务 50.01毫秒, 而Python是50.05毫秒,差别可以忽略不计了。

所以很多场景,即使语言本身执行性能再高,总体性能也高不起来。

白月黑羽 根据 前程无忧网站 的搜索结果, python在 国内的职位需求 仅次于 java、js 、c/c++ 位列第四,超过php、c#等明星语言。 而且成长势头来看,速度超过前面3位。

运行Python程序,提示找不到Python命令

如果你运行python的时候,显示如下

c:\>python first.py

'python' 不是内部或外部命令,也不是可运行的程序

或批处理文件。

这是因为,你安装Python解释器的时候,没有勾选 add Python to path

所以,命令行程序找不到Python.exe 在什么地方。

怎么解决这个问题呢?

如果你是Windows 操作系统,不需要重装Python, 在Windows环境变量path里面加上 Python解释器所在路径即可。

点击这里,打开windows设置

然后,如下下图所示,输入 huanj,点击 编辑系统环境变量

然后,在弹出对话框中,点击 环境变量

然后,双击系统变量栏目下面的 path 这条

然后,按照下图操作

注意:

你要看看你的python解释器安装在什么目录,填写你的目录。

一定是python所在目录 ,不要在最后加上python.exe

把python目录中的scripts目录也加上,就是最后要多两条记录,如下所示

最后,很重要,

因为刚才对环境变量的修改,对已经打开的窗口不生效!!!

所以你必须 关闭 你已经打开的命令行窗口, 重新打开一个窗口 , 再次执行python程序。

好了,大功告成。

运行Python程序,提示找不到代码文件

如果你运行python的时候,显示如下

c:\>python first.py

python: can't open file 'first.py': [Errno 2] No such file or directory

这是什么原因?

要运行一个Python脚本,通常我们需要打开命令行窗口,并 进入到该脚本所在的目录 。 这样Python解释器才能找到这个程序。

比如我们要运行的Python脚本的全路径 是 ‘d:\tmp\price.py’

那么我们通常需要进入到 ‘d:\tmp’ 目录下面,然后再执行 命令 python price.py

当然,你也可以 在命令行中使用 脚本的全路径 , 像这样 python d:\tmp\price.py 。 就可以在任意目录下面执行成功了。

查看和修改当前工作目录

当前Python程序的工作目录,可以通过 os.getcwd 获得,如下

import os

curDir = os.getcwd()

如果要修改当前工作目录,使用 os.chdir,如下

import os

os.chcwd('d:\\home')

查看导入的模块的路径

要知道导入的模块 对应的 代码文件的路径,可以使用模块的 __file__ 属性。

如下所示

>>> import selenium

>>> selenium.__file__

'C:\\Python36\\lib\\site-packages\\selenium\\__init__.py'

>>>

查看当前正在执行的代码文件的路径

有时候,我们需要得到 当前执行的代码文件 的 全路径。

这时候,我们可以 使用 os.path.realpath(__file__)

如下所示

import os

# 当前代码文件路径

current_script_path = os.path.realpath( __file__ )

print(current_script_path)

# 代码文件所在目录路径

print(os.path.dirname(current_script_path))

查看当前运行的python解释器的路径

有时候,我们需要得到 当前运行的python解释器的路径。

比如,我们需要使用当前的python解释器再运行 另外一个脚本程序

这时候,我们可以 使用 sys.executable 得到当前运行的python解释器的路径。

如下所示

import os,sys

pid_or_handle1 = os.spawnl(

os.P_NOWAIT,

sys.executable,

sys.executable,

"otherscript.py",

'param1',

'param2')

判断一个对象是否可以执行

hasattr函数可以用来判断变量对应的对象是否是可执行的。

返回值为True就是可执行的。

如下所示

def obj1():

pass

obj2 = 'ok'

hasattr(obj1,'__call__') # 返回 True

hasattr(obj2,'__call__') # 返回 False

字符串IP地址转换为 整数IP地址

我们做性能测试时,有时需要让网卡绑定很多IP地址,这时候,需要 把字符串IP地址转换为 整数IP地址。

可以这样做

import socket,struct

strIP = "192.168.0.1"

intIP = socket.ntohl(struct.unpack("I",socket.inet_aton(strIP))[0])

print(intIP)

如果反过来,需要把 整数IP转换为字符串IP,可以这样

import socket,struct

intIP = 3232235521

strIP = socket.inet_ntoa(struct.pack('I',socket.htonl(intIP)))

print(strIP)

提示ModuleNotFoundError

有的朋友明明已经安装了某个库,在Pycharm中编辑代码,导入库时,却有红色波浪线,提示

Unresolved reference '某个库名'

运行也会报错,类似如下

c:\untitled\venv\Scripts\python.exe C:/untitled/venv/first.py

Traceback (most recent call last):

File "C:/untitled/venv/first.py", line 1, in

from PySide2.QtWidgets import QApplication, QMessageBox

ModuleNotFoundError: No module named 'PySide2'

那是因为你们用Pycharm创建项目的时候,使用的解释器环境是新建的venv环境。

而你们执行pip安装的库,安装到了基础解释器环境(非venv)下面。

两种解决方法:

第一种:修改Pycharm使用基础解释器环境

第二种:执行venv环境里面的pip,安装这个库

白月黑羽教python_其他 | 白月黑羽教Python相关推荐

  1. axure怎么做5秒倒计时_五个月宝宝早教,5个月婴儿早教怎么做

    五个月宝宝早教,5个月婴儿早教怎么做,5个月宝宝是需要开始有意识的进行精细动作的家庭训练了 5个月宝宝的一般特点: 到了5个月时,能用眼睛观察周围的物体了,而且对什么都感到新奇好玩,能在眼睛的支配下抓 ...

  2. python接单业余赚钱的门路_用Python赚钱的5个方法,教你业余时间月赚几千外快...

    原标题:用Python赚钱的5个方法,教你业余时间月赚几千外快 Python作为一门编程语言,一门技术,就一定能够为我们所用,至少赚个外快是绝对没有问题的. 我之前做过半年少儿编程老师,一个小学四年级 ...

  3. 副业项目:小红书教资项目,月入10000+

    今天浩哥给大家分享一个月入过万的项目,小红书教资项目. 小红书教资项目,简单的说,就是一个虚拟资源项目,主要售卖幼师学习资料的,是去年网赚圈很火的培训项目. 项目的核心还是流量. 我们选择的平台是小红 ...

  4. 6 日期字符串转日期_山西省导游协会关于发放电子导游证的通知 (生成日期为2020年5月28日2020年6月3日)...

    各位会员.导游同仁们:山西省导游协会电子导游证(生成日期为:2020年5月28日-2020年6月3日)已制作完成,为保障电子导游证发放工作顺利进行,现将发放电子导游证有关事项通知如下:一.领取人员手机 ...

  5. 招行金葵花,经典白,银钻,AE白问题总结贴

    http://www.flyertea.com/forum.php?mod=viewthread&tid=521691&extra=page%3D4%26filter%3Dtypeid ...

  6. 阴阳师服务器维护2月20,阴阳师2019年3月20日更新内容 阴阳师手游3月20日维护更新公告...

    阴阳师3月20日更新了什么?阴阳师3月20日维护更新后,新式神赤影妖刀姬上线,赤影刀舞召唤活动来袭,上新了多个全新活动,以及一些体验优化和问题修正,还不清楚的玩家,下面小编为大家带来了阴阳师手游3月2 ...

  7. leaf优秀作品推荐 天使のいない12月(没有天使的12月)天使不在的12月攻略

    推荐理由: 不愧是leaf的作品,人设以及CG的确很美 这个恐怕是LEAF第一个 能让大师有爱的作品,像什么ToHeart 2 AD ,玩的时候差点就睡着了.... 如果是抱着玩童话式的恋爱游戏的心态 ...

  8. 吴恩达Deeplearning.ai课程学习全体验:深度学习必备课程 By 路雪2017年8月14日 11:44 8 月 8 日,吴恩达正式发布了 Deepleanring.ai——基于 Cours

    吴恩达Deeplearning.ai课程学习全体验:深度学习必备课程 By 路雪2017年8月14日 11:44 8 月 8 日,吴恩达正式发布了 Deepleanring.ai--基于 Course ...

  9. 【目标一】2019年9月15日 - 2019年9月22日晚 --- 周计划

    2019年9月15日 - 2019年9月22日晚 --- 周计划 工作日作息时间 周末或者节假日作息时间(如果没有活动 或者 不用加班的话) 心若向暖,何处不阳光:心若向阳,便何处不花开 \^_\^ ...

最新文章

  1. 关于--Error: User Command terminated, Exit-Code = 1解决办法
  2. Config程序配置文件操作实践进阶之ConfigurationSectionGroup
  3. 王者荣耀连接不上服务器最新赛季排名,王者荣耀新赛季连掉三段 初期不能打排位是有原因的...
  4. vue ui 启动,浏览器报错Unexpected token
  5. 洛谷 2449 [SDOI2005]矩形
  6. 开放式关系抽取_有效的开放式合作伙伴关系的3课
  7. Ext.apply与Ext.applyIf
  8. aceAdmin框架依赖
  9. ie加载项存在残留是什么_残余IE加载项无法修复
  10. linux卸载邮件服务,Zimbra在linux系统上的删除(卸载)方法
  11. 普通话测试-短文60篇文章,附带拼音(41-50篇)
  12. NMOS、PMOS、PNP、NPN三极管 做开关使用时的电路设计
  13. pcb板led正负极图形_晶体二极管正负极判断_晶体二极管图形符号
  14. D3.js 绘制地图
  15. excel使用技巧手记
  16. 小企业怎样选择服务器和操作系统
  17. 谷歌drive收费_Google Drive的系统设计分析
  18. VC2008 NewControl 示例
  19. keil调试过程中源代码界面没有箭头
  20. 关闭Linux哔哔声

热门文章

  1. exp-00003 错误
  2. 什么是ISBN码及其如何制作
  3. inet_addr()和IN_ADDR
  4. 一、简单工厂模式(simple factory method)
  5. 北大igem生物计算机,北京大学iGEM团队在国际大赛中取得优异成绩
  6. PostgreSQL 物流调度算法探索 - 基于PostGIS/pgrouting/机器学习
  7. 释放cuda显存及进程
  8. 2021-2027全球与中国同种异体人类软骨细胞市场现状及未来发展趋势
  9. 计算机调剂还是找工作,儿子是C9学生,考研只能调剂,究竟是调剂好还是找工作好?...
  10. 最值得你收藏的金字塔之谜详解