白月黑羽教python_其他 | 白月黑羽教Python
都说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相关推荐
- axure怎么做5秒倒计时_五个月宝宝早教,5个月婴儿早教怎么做
五个月宝宝早教,5个月婴儿早教怎么做,5个月宝宝是需要开始有意识的进行精细动作的家庭训练了 5个月宝宝的一般特点: 到了5个月时,能用眼睛观察周围的物体了,而且对什么都感到新奇好玩,能在眼睛的支配下抓 ...
- python接单业余赚钱的门路_用Python赚钱的5个方法,教你业余时间月赚几千外快...
原标题:用Python赚钱的5个方法,教你业余时间月赚几千外快 Python作为一门编程语言,一门技术,就一定能够为我们所用,至少赚个外快是绝对没有问题的. 我之前做过半年少儿编程老师,一个小学四年级 ...
- 副业项目:小红书教资项目,月入10000+
今天浩哥给大家分享一个月入过万的项目,小红书教资项目. 小红书教资项目,简单的说,就是一个虚拟资源项目,主要售卖幼师学习资料的,是去年网赚圈很火的培训项目. 项目的核心还是流量. 我们选择的平台是小红 ...
- 6 日期字符串转日期_山西省导游协会关于发放电子导游证的通知 (生成日期为2020年5月28日2020年6月3日)...
各位会员.导游同仁们:山西省导游协会电子导游证(生成日期为:2020年5月28日-2020年6月3日)已制作完成,为保障电子导游证发放工作顺利进行,现将发放电子导游证有关事项通知如下:一.领取人员手机 ...
- 招行金葵花,经典白,银钻,AE白问题总结贴
http://www.flyertea.com/forum.php?mod=viewthread&tid=521691&extra=page%3D4%26filter%3Dtypeid ...
- 阴阳师服务器维护2月20,阴阳师2019年3月20日更新内容 阴阳师手游3月20日维护更新公告...
阴阳师3月20日更新了什么?阴阳师3月20日维护更新后,新式神赤影妖刀姬上线,赤影刀舞召唤活动来袭,上新了多个全新活动,以及一些体验优化和问题修正,还不清楚的玩家,下面小编为大家带来了阴阳师手游3月2 ...
- leaf优秀作品推荐 天使のいない12月(没有天使的12月)天使不在的12月攻略
推荐理由: 不愧是leaf的作品,人设以及CG的确很美 这个恐怕是LEAF第一个 能让大师有爱的作品,像什么ToHeart 2 AD ,玩的时候差点就睡着了.... 如果是抱着玩童话式的恋爱游戏的心态 ...
- 吴恩达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 ...
- 【目标一】2019年9月15日 - 2019年9月22日晚 --- 周计划
2019年9月15日 - 2019年9月22日晚 --- 周计划 工作日作息时间 周末或者节假日作息时间(如果没有活动 或者 不用加班的话) 心若向暖,何处不阳光:心若向阳,便何处不花开 \^_\^ ...
最新文章
- 关于--Error: User Command terminated, Exit-Code = 1解决办法
- Config程序配置文件操作实践进阶之ConfigurationSectionGroup
- 王者荣耀连接不上服务器最新赛季排名,王者荣耀新赛季连掉三段 初期不能打排位是有原因的...
- vue ui 启动,浏览器报错Unexpected token
- 洛谷 2449 [SDOI2005]矩形
- 开放式关系抽取_有效的开放式合作伙伴关系的3课
- Ext.apply与Ext.applyIf
- aceAdmin框架依赖
- ie加载项存在残留是什么_残余IE加载项无法修复
- linux卸载邮件服务,Zimbra在linux系统上的删除(卸载)方法
- 普通话测试-短文60篇文章,附带拼音(41-50篇)
- NMOS、PMOS、PNP、NPN三极管 做开关使用时的电路设计
- pcb板led正负极图形_晶体二极管正负极判断_晶体二极管图形符号
- D3.js 绘制地图
- excel使用技巧手记
- 小企业怎样选择服务器和操作系统
- 谷歌drive收费_Google Drive的系统设计分析
- VC2008 NewControl 示例
- keil调试过程中源代码界面没有箭头
- 关闭Linux哔哔声
热门文章
- exp-00003 错误
- 什么是ISBN码及其如何制作
- inet_addr()和IN_ADDR
- 一、简单工厂模式(simple factory method)
- 北大igem生物计算机,北京大学iGEM团队在国际大赛中取得优异成绩
- PostgreSQL 物流调度算法探索 - 基于PostGIS/pgrouting/机器学习
- 释放cuda显存及进程
- 2021-2027全球与中国同种异体人类软骨细胞市场现状及未来发展趋势
- 计算机调剂还是找工作,儿子是C9学生,考研只能调剂,究竟是调剂好还是找工作好?...
- 最值得你收藏的金字塔之谜详解