#1 Python灵活技巧
前言
python基础系列博文已顺利结束,从这一篇开始将进入探索更加高级的python用法,python进阶系列文章将包含面向对象、网络编程、gui编程、线程和进程、连接数据库等。不过在进阶之前,先来熟练使用一些python的小技巧,这就好像操作系统的快捷键一样,熟练掌握这些小技巧会让你工作起来事半功倍,话不多说,盘它!
python常用技巧
技巧一:加速pip安装
使用pip安装第三方模块时,网速总是很慢,这是因为pip的镜像源在国外,如果换成国内稳定的镜像源速度将会飞起,这里推荐豆瓣的镜像源
「本次安装时更改为豆瓣镜像源,使用 -i 指定镜像源」
pip install -i https://pypi.douban.com/simple 模块
「永久更改为豆瓣镜像源,推荐」
linux/macos平台:
修改pip的配置文件,文件位置~/.pip/.pip.conf(如果没有自己创建即可),将其改为如下内容保存:
[global] index-url = https://pypi.douban.com/simple
windows平台:
打开资源管理器,在地址栏输入%appdata%后回车,在此位置新建pip文件夹,进入pip文件夹,新建pip.ini文件,鼠标右键用记事本打开,输入如下内容保存:
[global] index-url = https://pypi.douban.com/simple
技巧二:pip命令补全
pip命令可以想linux命令一样使用tab键补全,只需运行如下命令即可:
linux/macos平台:
「bash用户」
$ pip completion -b >> ~/.profile
「zsh用户」
$ pip completion -z >> ~/.zshrc
技巧三:pip批量安装模块
有时一个python项目需要用到大量第三方模块,手动使用pip一条一条安装是不现实的,这时就要使用批量安装了,将需要的模块写入requirements.text文件中,一个模块占用一行,模块名必须有,版本号可有可无(通常项目开发者会创建这个文件,方便其他使用者安装模块),这时使用pip批量安装即可:
$ pip install -r requirements.text
技巧四:检测模块是否正确安装
当我们安装了一个第三方模块时,第一步总是要检测其是否正确安装,通常做法是打开python交互界面,输入 import 模块 回车后如果不抛出异常则证明成功安装,否则安装失败。这种方法应对一两个模块还行,但是如果需要检测上百个模块怎么办?这时就需要命令方式来检测了:
$ python -c 'import jieba' # jieba模块已经正确安装,不会返回任何信息 $ python -c 'import flask' # flask模块没有安装,抛出异常 traceback (most recent call last): file "<string>", line 1, in <module> importerror: no module named 'flask'
使用这种命令的方式可以大大的提高检测效率,只需要编写一个shell或者python脚本就可以实现了
技巧五:快速将json字符串转换为字典格式
有时需要将一个json字符串转换为字典,但是又不想新建python文件导入json模块,那怎么办呢?快洗洗睡哇!!!其实还真有办法,那就是使用json.tool在命令行直接解析:
$ echo '{"name": "minutesheep", "age": 99, "gender": "male"}' | python -m json.tool { "name": "minutesheep", "age": 99, "gender": "male" }
可以看到非常方便,连格式都自动格式化了
技巧六:秒开下载服务器
日常生活中,经常要拷贝和被拷贝同学或者同事的文件,要么用u盘,要么登录qq,总感觉很烦!!!此时,使用python秒开一个下载服务器将会解决你的所有烦恼,尤其是对于在同一个网络环境下的用户。将需要传给同事的文件拷贝到一个文件夹,之后在这个文件夹中输入如下命令:
$ python -m http.server serving http on 0.0.0.0 port 8000 ...
这时候在同一个网络下的用户便可以用浏览器访问这个目录了(访问方法:假如我的ip地址为123.123.123.123,其他用户只需在浏览器地址栏输入:123.123.123.123:8000)点击文件下载即可,超方便有没有,这该死的无处安放的魅力啊~
技巧七:同时遍历多个可迭代对象
有时在处理数据的时候,经常出现这种情况:名字有一个单独的列表,性别有一个单独的列表,年龄有一个单独的列表,当你想一一对应的时候,一定会尝试这样做:
in [1]: name = ['aa','bb','cc','dd','ff'] in [2]: age = [12,13,14,15,14] in [3]: gender = ['m','f','m','f','f'] in [4]: for n,a,g in name,age,gender: ...: print(n,a,g) ...: --------------------------------------------------------------------------- valueerror traceback (most recent call last) <ipython-input-4-c3abaee834b9> in <module> ----> 1 for n,a,g in name,age,gender: 2 print(n,a,g) 3 valueerror: too many values to unpack (expected 3) # 可以看到抛出参数过多异常,列表不能迭代超过一个
相关文章:
-
-
python内部使用引用计数,来保持追踪内存中的对象,Python内部记录了对象有多少个引用,即引用计数,当对象被创建时就创建了一个引用计数,当对象... [阅读全文]
-
HDU 6138 Fleet of the Eternal Throne(后缀自动机)
题意 "题目链接" Sol 真是狗血,被疯狂卡常的原因竟是 我们考虑暴力枚举每个串的前缀,看他能在$x, y$的后缀自动机中走多少步,对两者取个mi... [阅读全文] -
思路 首先想到费用流。 对于每个点拆点。然后考虑我们怎样才能保证每个点只被用一次。 如果$i$与$j$满足条件。那么就从$i$向$j$连一条边并且... [阅读全文]
-
版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。
上一篇: 我都不敢答应
发表评论