国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

Python快速教程(補(bǔ)充篇02):Python小技巧

2019-11-14 16:55:49
字體:
供稿:網(wǎng)友

import模塊

在Python經(jīng)常使用import聲明,以使用其他模塊(也就是其它.py文件)中定義的對象。

1) 使用__name__

當(dāng)我們編寫Python庫模塊的時(shí)候,我們往往運(yùn)行一些測試語句。當(dāng)這個(gè)程序作為庫被import的時(shí)候,我們并不需要運(yùn)行這些測試語句。一種解決方法是在import之前,將模塊中的測試語句注釋掉。Python有一種更優(yōu)美的解決方法,就是使用__name__。

下面是一個(gè)簡單的庫程序TestLib.py。當(dāng)直接運(yùn)行TestLib.py時(shí),__name__為”__main__”。如果被import的話,__name__為”TestLib”。

 
 
 
 
 
Python
 
1
2
3
4
5
6
7
8
9
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。

 
 
 
 
 
Python
 
1
2
import TestLib
print(TestLib.lib_func(120))

你可以嘗試不在TestLib.py中使用if __name__==’__main__’, 并對比運(yùn)行結(jié)果。

 

2) 更多import使用方式

import TestLib as test         # 引用TestLib模塊,并將它改名為t

比如:

比如:

 
 
 
 
 
Python
 
1
2
import TestLib as t
print(t.lib_func(120))

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

這樣的好處是減小所引用模塊的內(nèi)存占用。

比如:

 
 
 
 
 
Python
 
1
2
from TestLib import lib_func
print(lib_func(120))

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

比如:

 
 
 
 
 
Python
 
1
2
from TestLib import *
print(lib_func(120))

 

查詢

1) 查詢函數(shù)的參數(shù)

當(dāng)我們想要知道某個(gè)函數(shù)會接收哪些參數(shù)的時(shí)候,可以使用下面方法查詢。

 
 
 
 
 
Python
 
1
2
import inspect
print(inspect.getargspec(func))

 

2) 查詢對象的屬性

除了使用dir()來查詢對象的屬性之外,我們可以使用下面內(nèi)置(built-in)函數(shù)來確認(rèn)一個(gè)對象是否具有某個(gè)屬性:

hasattr(obj, attr_name)   # attr_name是一個(gè)字符串

例如:

 
 
 
 
 
Python
 
1
2
a = [1,2,3]
print(hasattr(a,'append'))

 

2) 查詢對象所屬的類和類名稱

 
 
 
 
 
Python
 
1
2
3
a = [1, 2, 3]
print a.__class__
print a.__class__.__name__

 

3) 查詢父類

我們可以用__base__屬性來查詢某個(gè)類的父類:

cls.__base__

例如:

 
 
 
 
 
Python
 
1
print(list.__base__)

 

使用中文(以及其它非ASCII編碼)

在Python程序的第一行加入#coding=utf8,例如:

 
 
 
 
 
Python
 
1
2
#coding=utf8
print("你好嗎?")

也能用以下方式:

 
 
 
 
 
Python
 
1
2
#-*- coding: UTF-8 -*-
print("你好嗎?")

 

表示2進(jìn)制,8進(jìn)制和16進(jìn)制數(shù)字

在2.6以上版本,以如下方式表示

 
 
 
 
 
Python
 
1
2
3
print(0b1110)     # 二進(jìn)制,以0b開頭
print(0o10)       # 八進(jìn)制,以0o開頭
print(0x2A)       # 十六進(jìn)制,以0x開頭

如果是更早版本,可以用如下方式:

 
 
 
 
 
Python
 
1
2
3
print(int("1110", 2))
print(int("10", 8))
print(int("2A", 16))

 

注釋

一行內(nèi)的注釋可以以#開始

多行的注釋可以以”’開始,以”’結(jié)束,比如

 
 
 
 
 
Python
 
1
2
3
4
5
6
7
8
9
10
'''
This is demo
'''
 
def func():
    # print something
    print("Hello world!")  # use print() function
 
# main
func()

注釋應(yīng)該和所在的程序塊對齊。

 

搜索路徑

當(dāng)我們import的時(shí)候,Python會在搜索路徑中查找模塊(module)。比如上面import TestLib,就要求TestLib.py在搜索路徑中。

我們可以通過下面方法來查看搜索路徑:

 
 
 
 
 
Python
 
1
2
import sys
print(sys.path)

我們可以在Python運(yùn)行的時(shí)候增加或者刪除sys.path中的元素。另一方面,我們可以通過在shell中增加PYTHONPATH環(huán)境變量,來為Python增加搜索路徑。

下面我們增加/home/vamei/mylib到搜索路徑中:

$export PYTHONPATH=$PYTHONPATH:/home/vamei/mylib

你可以將正面的這行命令加入到~/.bashrc中。這樣,我們就長期的改變了搜索路徑。

 

腳本與命令行結(jié)合

可以使用下面方法運(yùn)行一個(gè)Python腳本,在腳本運(yùn)行結(jié)束后,直接進(jìn)入Python命令行。這樣做的好處是腳本的對象不會被清空,可以通過命令行直接調(diào)用。

$python -i script.py

 

安裝非標(biāo)準(zhǔn)包

Python的標(biāo)準(zhǔn)庫隨著Python一起安裝。當(dāng)我們需要非標(biāo)準(zhǔn)包時(shí),就要先安裝。

1) 使用linux repository (Linux環(huán)境)

這是安裝Python附加包的一個(gè)好的起點(diǎn)。你可以在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安裝在一個(gè)非標(biāo)準(zhǔn)的路徑(使用$which python來確認(rèn)python可執(zhí)行文件的路徑)中,比如/home/vamei/util/python/bin中,你可以使用下面方法設(shè)置pip的安裝包的路徑:

$pip install –install-option=”–prefix=/home/vamei/util/” web.py

3) 從源碼編譯

如果上面方法都沒法找到你想要的庫,你可能需要從源碼開始編譯。Google往往是最好的起點(diǎn)。

全能程序員交流QQ群290551701,聚集很多互聯(lián)網(wǎng)精英,技術(shù)總監(jiān),架構(gòu)師,項(xiàng)目經(jīng)理!開源技術(shù)研究,歡迎業(yè)內(nèi)人士,大牛及新手有志于從事IT行業(yè)人員進(jìn)入!


發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 临江市| 广东省| 邢台县| 荆门市| 临沂市| 秭归县| 宁强县| 东乌| 丁青县| 濮阳县| 从江县| 阿尔山市| 汶川县| 许昌市| 保德县| 永宁县| 延安市| 东海县| 若羌县| 大洼县| 喀喇| 富民县| 阿拉善盟| 梅州市| 绥棱县| 潼南县| 和静县| 嘉兴市| 琼中| 遂平县| 乾安县| 青浦区| 潞城市| 茶陵县| 阿坝县| 滦南县| 龙山县| 保康县| 清水河县| 米易县| 德惠市|