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.pswp.cn/news/260240.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/260240.shtml
英文地址,請注明出處:http://en.pswp.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;我說咱們的這幾個項…