python 小技巧(import模块、查询类继承关系、安装包)
作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明。谢谢!
在这里列举一些我使用Python时积累的小技巧。这些技巧是我在使用Python过程中经常使用的。之前很零碎的记在笔记本中,现在整理出来,和大家分享,也作为Python快速教程的一个补充。
import模块
在Python经常使用import声明,以使用其他模块(也就是其它.py文件)中定义的对象。
1) 使用__name__
当我们编写Python库模块的时候,我们往往运行一些测试语句。当这个程序作为库被import的时候,我们并不需要运行这些测试语句。一种解决方法是在import之前,将模块中的测试语句注释掉。Python有一种更优美的解决方法,就是使用__name__。
下面是一个简单的库程序TestLib.py。当直接运行TestLib.py时,__name__为"__main__"。如果被import的话,__name__为"TestLib"。

def lib_func(a):
return a + 10
def lib_func_another(b):
return b + 20
if __name__ == '__main__':
test = 101
print(lib_func(test))

我们在user.py中import上面的TestLib。
import TestLib
print(TestLib.lib_func(120))
你可以尝试不在TestLib.py中使用if __name__=='__main__', 并对比运行结果。
2) 更多import使用方式
import TestLib as test # 引用TestLib模块,并将它改名为t
比如:
import TestLib as t
print(t.lib_func(120))
from TestLib import lib_func # 只引用TestLib中的lib_func对象,并跳过TestLib引用字段
这样的好处是减小所引用模块的内存占用。
比如:
from TestLib import lib_func
print(lib_func(120))
from TestLib import * # 引用所有TestLib中的对象,并跳过TestLib引用字段
比如:
from TestLib import *
print(lib_func(120))
查询
1) 查询函数的参数
当我们想要知道某个函数会接收哪些参数的时候,可以使用下面方法查询。
import inspect
print(inspect.getargspec(func))
2) 查询对象的属性
除了使用dir()来查询对象的属性之外,我们可以使用下面内置(built-in)函数来确认一个对象是否具有某个属性:
hasattr(obj, attr_name) # attr_name是一个字符串
例如:
a = [1,2,3]
print(hasattr(a,'append'))
2) 查询对象所属的类和类名称
a = [1, 2, 3]
print a.__class__
print a.__class__.__name__
3) 查询父类
我们可以用__base__属性来查询某个类的父类:
cls.__base__
例如:
print(list.__base__)
使用中文(以及其它非ASCII编码)
在Python程序的第一行加入#coding=utf8,例如:
#coding=utf8
print("你好吗?")
也能用以下方式:
#-*- coding: UTF-8 -*-
print("你好吗?")
表示2进制,8进制和16进制数字
在2.6以上版本,以如下方式表示
print(0b1110) # 二进制,以0b开头
print(0o10) # 八进制,以0o开头
print(0x2A) # 十六进制,以0x开头
如果是更早版本,可以用如下方式:
print(int("1110", 2))
print(int("10", 8))
print(int("2A", 16))
注释
一行内的注释可以以#开始
多行的注释可以以'''开始,以'''结束,比如

'''
This is demo
''' def func():
# print something
print("Hello world!") # use print() function # main
func()

注释应该和所在的程序块对齐。
搜索路径
当我们import的时候,Python会在搜索路径中查找模块(module)。比如上面import TestLib,就要求TestLib.py在搜索路径中。
我们可以通过下面方法来查看搜索路径:
import sys
print(sys.path)
我们可以在Python运行的时候增加或者删除sys.path中的元素。另一方面,我们可以通过在shell中增加PYTHONPATH环境变量,来为Python增加搜索路径。
下面我们增加/home/vamei/mylib到搜索路径中:
$export PYTHONPATH=$PYTHONPATH:/home/vamei/mylib
你可以将正面的这行命令加入到~/.bashrc中。这样,我们就长期的改变了搜索路径。
脚本与命令行结合
可以使用下面方法运行一个Python脚本,在脚本运行结束后,直接进入Python命令行。这样做的好处是脚本的对象不会被清空,可以通过命令行直接调用。
$python -i script.py
安装非标准包
Python的标准库随着Python一起安装。当我们需要非标准包时,就要先安装。
1) 使用Linux repository (Linux环境)
这是安装Python附加包的一个好的起点。你可以在Linux repository中查找可能存在的Python包 (比如在Ubuntu Software Center中搜索matplot)。
2) 使用pip。pip是Python自带的包管理程序,它连接Python repository,并查找其中可能存在的包。
比如使用如下方法来安装、卸载或者升级web.py:
$pip install web.py
$pip uninstall web.py
$pip install --upgrade web.py
如果你的Python安装在一个非标准的路径(使用$which python来确认python可执行文件的路径)中,比如/home/vamei/util/python/bin中,你可以使用下面方法设置pip的安装包的路径:
$pip install --install-option="--prefix=/home/vamei/util/" web.py
3) 从源码编译
如果上面方法都没法找到你想要的库,你可能需要从源码开始编译。Google往往是最好的起点。
python 小技巧(import模块、查询类继承关系、安装包)的更多相关文章
- 掌握这个Python小技巧,轻松构建cytoscape导入文件
今天小编和大家分享如何借助Python脚本轻松构建cytoscape导入文件.Cytoscape是一个非常适合展示各种相互作用关系的可视化软件. 具体来说就是可以用于蛋白互作网络的展示,miRNA与蛋 ...
- python小技巧 小知识
python小技巧 小知识 python系统变量(修改调用shell命令路径)或用户空间说明 20150418 python调用系统命令,报找不到.怎么办? 类似执行shell的: [ -f /etc ...
- python附录-builtins.py模块str类源码(含str官方文档链接)
python附录-builtins.py模块str类源码 str官方文档链接:https://docs.python.org/3/library/stdtypes.html#text-sequence ...
- PythonI/O进阶学习笔记_4.自定义序列类(序列基类继承关系/可切片对象/推导式)
前言: 本文代码基于python3 Content: 1.python中的序列类分类 2. python序列中abc基类继承关系 3. 由list的extend等方法来看序列类的一些特定方法 4. l ...
- Programming In Scala笔记-第十一章、Scala中的类继承关系
本章主要从整体层面了解Scala中的类层级关系. 一.Scala的类层级 在Java中Object类是所有类的最终父类,其他所有类都直接或间接的继承了Object类.在Scala中所有类的最终父类为A ...
- Unity类继承关系 图
UnityEngine(命名空间) 其他命名空间 其他类 Object(类) 其他类(继承自Object) Component(类)(继承自Object) 其他类(继承自Component) Tran ...
- Idea查看接口或类继承关系
打开想要查看的接口或者类文件,使用快捷键CTRL+H调出Hierarchy窗口 比如,想要查看Exception的类继承关系,首先定位到这个文件,然后调出Hierarchy窗口. 该窗口上面的一排工具 ...
- C# Wpf Shape类继承关系
Path派生于Shape namespace System.Windows.Shapes { public sealed class Path : Shape { // Path 派生于Shape } ...
- Python补充02 Python小技巧
作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 在这里列举一些我使用Python时积累的小技巧.这些技巧是我在使用Python过程 ...
随机推荐
- im4java开发向导
0.搜索ImageMagick下载安装 1.Setting up the Environment 引入im4java到classpath 设置图片处理引擎的command searchpa ...
- 【测试】通过RMAN联机全库备份,包括控制文件,归档日志文件,备份成功后,删除已备份的归档日志。
RMAN是一个很方便很好用的备份,恢复,还原的一个工具,做这个小测试其实只有一个RMAN语句就完全解决了这么大的需求: RMAN> backup as backupset full databa ...
- MSP430F149学习之路——比较器Comparaor_A
代码一: #include <msp430x14x.h> ; void int_clk() { BCSCTL1 &= ~XT2OFF; BCSCTL2 |= SELM_2 + SE ...
- oracle的sqlldr并行导入表不要加索引
ORA-26002: Table string has index defined upon it. Cause: Parallel load was specified into a table w ...
- ref传递
下面通过一个排序的小栗子来分析ref传递: static void Main(string[] args) { ,,,,}; int num; Console.WriteLine("请输入您 ...
- Scrapy安装、爬虫入门教程、爬虫实例(豆瓣电影爬虫)
Scrapy在window上的安装教程见下面的链接:Scrapy安装教程 上述安装教程已实践,可行.(本来打算在ubuntu上安装Scrapy的,但是Ubuntu 磁盘空间太少了,还没扩展磁盘空间,所 ...
- [Hibernate 2]session的三种状态
一.Session的特点和获取 特点: Session不是线程安全的,它代表与数据库之间的一次操作,它的概念介于Connection和Transaction之间. Session也称为持久化管理器, ...
- [SSH 2] 以网站主页面浅谈Struts2配置
导读:前面总体的介绍了一下SSH框架,那么作为Struts这一支,具体是怎么配置的呢?本篇博客则主要是以自己做过的实例中的登录一条线,简单介绍一下struts2的配置,如有不妥之处,还请大家多提点提点 ...
- 【MySQL】MySQL事务回滚脚本
MySQL自己的 mysqlbinlog | mysql 回滚不好用,自己写个简单脚本试试: 想法是用mysqlbinlog把需要回滚的事务区域从mysql-bin.file中找到,然后通过脚本再插入 ...
- My Sql 1067错误兼编码问题解决
My Sql 大部分都是用绿色版(解压版) 然后注册服务 简单方便. 但是.配置文件头痛的一逼. 首先配置mysql的环境变量. mySQL 环境变量(我的电脑-右击属性-高级-环境变量) MYSQL ...