python查询模块所有类_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"。

deflib_func(a):return a + 10

deflib_func_another(b):return b + 20

if __name__ == '__main__':

test= 101

print(lib_func(test))

我们在user.py中import上面的TestLib。

importTestLibprint(TestLib.lib_func(120))

你可以尝试不在TestLib.py中使用if __name__=='__main__', 并对比运行结果。

2) 更多import使用方式

import TestLib as test       # 引用TestLib模块,并将它改名为t

比如:

importTestLib as tprint(t.lib_func(120))

from TestLib import lib_func   # 只引用TestLib中的lib_func对象,并跳过TestLib引用字段

这样的好处是减小所引用模块的内存占用。

比如:

from TestLib importlib_funcprint(lib_func(120))

from TestLib import *          # 引用所有TestLib中的对象,并跳过TestLib引用字段

比如:

from TestLib import *

print(lib_func(120))

查询

1) 查询函数的参数

当我们想要知道某个函数会接收哪些参数的时候,可以使用下面方法查询。

importinspectprint(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'''

deffunc():#print something

print("Hello world!") # use print() function#main

func()

注释应该和所在的程序块对齐。

搜索路径

当我们import的时候,Python会在搜索路径中查找模块(module)。比如上面import TestLib,就要求TestLib.py在搜索路径中。

我们可以通过下面方法来查看搜索路径:

importsysprint(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往往是最好的起点。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/260240.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

4.2 access函数实例

int access(const char *filenpath, int mode); 功 能: 确定文件或文件夹的访问权限。 mode,要判断的模式在头文件unistd.h中的预定义如下:#define R_OK 4 /* Test for read permission. */#define W_OK 2 /* Test for write permission. */#define X_OK…

php 简易 blog,PHP实现简易blog的制作

最近,有时间看了点PHP的代码。参考PHP100教程做了简单的blog,这里面简单的记录一下。首先是集成环境,这里选用的WAMP:http://www.wampserver.com/en/首先通过,phpMyAdmin创建一张blog表。纯界面操作,过程比…

jquery 事件对象属性小结

jquery 事件对象属性小结 使用事件自然少不了事件对象. 因为不同浏览器之间事件对象的获取, 以及事件对象的属性都有差异, 导致我们很难跨浏览器使用事件对象. jQuery中统一了事件对象, 当绑定事件处理函数时, 会将jQuery格式化后的事件对象作为唯一参数传入: $("#testDiv…

ABP文档 - Mvc 视图

文档目录 本节内容: 简介AbpWebViewPage 基类简介 ABP通过nuget包Abp.Web.Mvc集成到Mvc视图里,你可以像往常那样创建常规的视图。 AbpWebViewPage 基类 ABP也提供了AbpWebViewPage,它定义了一些有用的属性和方法,如果你使用启动模…

ThinkPad L440 FN键设置

刚入手了ThinkPad L440,用起来相当不错,嘿嘿! L440系统默认(F1-F12)键盘为系统默认功能键,主要控制音量、亮度、连接投影仪等。 因为编写程序需要调试,经常用到F10,F11等键&#xff…

离散数学反对称关系_《离散数学》学习记录 - 集合论

来源&#xff1a;北京大学《离散数学》公开课地址&#xff1a;https://www.bilibili.com/video/av18896337/?p122.1 有序对和卡氏积有序对<a,b>&#xff1a;有顺序&#xff0c;类似于数组&#xff0c;可以用集合定义。性质&#xff1a;有序对内元素对应相等卡氏积AB&…

收集的博客列表

前端&#xff1a; ———————————————————— 宅居 - 裸: http://otakustay.com/ 转载于:https://www.cnblogs.com/ccdc/archive/2012/11/21/2780879.html

php创建表并插入数据,php数据库操作-创建库和表以及插入数据

以上我们正确连接到了mysql数据库&#xff0c;本文将进一步创建数据库&#xff0c;表&#xff0c;在表中填充数据。大家知道连接上数据库才能进行操作&#xff0c;同样的代码搬过来/** 数据库操作*(创建数据库&#xff0c;表&#xff0c;插入数据&#xff0c;插入多条数据)** T…

C#配置及使用log4net

首先从官方网站http://logging.apache.org/log4net/下载最近版本的log4net组件。在程序中添加对log4net.dll的引用&#xff0c;就可以在程序中使用了。 下一步&#xff0c;编写配置文件&#xff0c;内容如下 <?xml version"1.0" encoding"utf-8" ?>…

ORACLE EBS常用表及查询语句(最终整理版)

建议去看参考二 参考一&#xff1a; call fnd_global.APPS_INITIALIZE(1318,50583,401) select fnd_profile.VALUE(ORG_ID) FROM DUAL select * from hr_operating_units hou where hou.organization_id204 --fn…

mysql触发器 当记录的指定字段发生变化时,更新表中的另外一个字段,或者更新另外一张关联表中关联记录的字段...

2019独角兽企业重金招聘Python工程师标准>>> 注意&#xff1a;语句中出现的old&#xff0c;new&#xff0c;now&#xff08;&#xff09;&#xff0c;都为数据库自带的关键字&#xff0c;此处不做解释。 两种情况&#xff1a; 第一种&#xff1a;一张表中&#xff0…

通用无线设备对码软件_珞光全新发布国产通用软件无线电平台 :USRP-LW N310!珞光品牌已实现国产替代...

USRP-LW N310是一种网络的软件定义无线电&#xff08;SDR&#xff09;&#xff0c;它提供了部署大规模的可靠的和容错性的分布式无线系统。USRP-LW N310通过引入远程执行任务的能力简化了对SDR系统的控制和管理&#xff0c;如更新软件&#xff0c;重新启动&#xff0c;工厂复位…

手把手玩转win8开发系列课程(2)

对win8开发&#xff0c;上一节我们对win8进行了简单的介绍&#xff0c;这一节我们来瞧一瞧他的开发环境搭建。 前奏。 这里所讲的win8开发&#xff0c;主要是指Windows8 app store 上开发&#xff0c;及metro ui或叫morden ui 程序的开发。传统桌面应用程序&#xff0c;网站应…

python通过什么来区分不同语句块_Python语言通过

【填空题】小块【填空题】离开;出发(n.)【填空题】好人啊中的 “ 啊 ” 读( )【填空题】“ 洁癖 ” 的正确读音是( )【单选题】The article suggests that when a person ________ under unusual stress he should be especially careful to have a well-balanced diet. (CET20…

【Android面试】Android面试题集锦 (陆续更新)

【Android面试】Android面试题集锦 (陆续更新) 分类&#xff1a; 【杂七杂八】2011-05-11 17:58 2064人阅读 评论(0) 收藏 举报一些常见的Android面试基础题做下总结&#xff0c;看看你能做出多少道? 1. Intent的几种有关Activity启动的方式有哪些&#xff0c;你了解每个含义吗…

cordova-plugin-app-version插件使用

此插件用来获取开发软件的版本号&#xff01;首先安装此插件&#xff1a; 命令行中输入 cordova plugin add cordova-plugin-app-version然后刷新项目&#xff0c;就会在在项目plugins文件夹下看到cordova-plugin-app-version,如下图所示接下来就是使用此插件的语句获取版本号c…

14.cookie与自动登陆

场景 webdriver可以读取并添加cookie。有时候我们需要验证浏览器中是否存在某个cookie&#xff0c;因为基于真实的cookie的测试是无法通过白盒和集成测试完成的。 另外更加常见的一个场景是自动登陆。有很多系统的登陆信息都是保存在cookie里的&#xff0c;因此只要往cookie中添…

不同串口通信速率超时时间_串口知识详解 串口功能及电路介绍

一、串口的概念串行接口简称串口&#xff0c;也称串行通信接口或串行通讯接口(通常指COM接口)&#xff0c;是采用串行通信方式的扩展接口。串行接口(SerialInterface)是指数据一位一位地顺序传送&#xff0c;其特点是通信线路简单&#xff0c;只要一对传输线就可以实现双向通信…

matlab 求最大值函数,利用matlab, 二元函数求最大值

求二元函数z0.2323*x^2-0.2866^22*(-0.5406)*a0^21.0203*a0^2*x^2/((x^2y^2)^0.5*tanh(2*(x^2y^2)^0.5)-x^2*(0.5733-u0)^2)的最大值&#xff0c;变量x和y都是在0.2附近。求z的最大值&#xff0c;以及x,y的取值。先用diff命令求z关于x,y的偏导数得到q(1)和q(2)两个方程&#xf…

代码生成那点事

在微软技术中浸淫6年多了&#xff0c;我就常想啊&#xff0c;有没有一个工具&#xff0c;能让开发简单一点&#xff0c;哪怕就简单一点点&#xff1f;&#xff01; 这还是去年的事情&#xff0c;手里的项目都成功上线了&#xff0c;我和james聊天&#xff0c;我说咱们的这几个项…