溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

python頭文件的編程風(fēng)格

發(fā)布時(shí)間:2020-09-03 10:23:25 來(lái)源:億速云 閱讀:161 作者:小新 欄目:編程語(yǔ)言

小編給大家分享一下python頭文件的編程風(fēng)格,希望大家閱讀完這篇文章后大所收獲,下面讓我們一起去探討吧!

python頭文件的編程風(fēng)格

本文主要以python2為例。首先介紹一下Python頭文件的編程風(fēng)格,然后再給大家詳細(xì)介紹import部分的基本用法。這兩個(gè)部分就是Python中頭文件的組成模塊。

編程風(fēng)格

#!/usr/bin/env python     #在文件頭部 ( 第一行 ) 加上   設(shè)置 Python 解釋器  
# -*- coding: utf-8 -*-  #在文件頭部 ( 第二行 ) 加上   在編輯器中設(shè)置以 UTF-8 默認(rèn)編碼保存文件  
# Copyright (c) ***   #版權(quán)信息放在文件頭部,文件編碼之后    
# docstring 是Python特有的注釋風(fēng)格,它是模塊、類或函數(shù)的第一個(gè)語(yǔ)句,可以通過(guò)__doc__方法訪問(wèn)   
# 用英語(yǔ)撰寫(xiě)注釋,短注釋可以忽略末尾的句號(hào) (.)  
# docstring 為每個(gè)模塊、類或函數(shù)撰寫(xiě) 
docstring 推薦使用三個(gè)雙引號(hào)(”””) 來(lái)定義
docsting , 不推薦使用三個(gè)單引號(hào) (''')  # 模塊的 docsting 放在文件頭部,版權(quán)信息之后    
”””This is a one line docstring.”””  
”””The title of a multiline docstring:  After title is the content.You can write it as long 
as needed.  ”””    # 把 import 語(yǔ)句放在文件頭部,在模塊 docstring 之后,在模塊全局變量或全局常量之前  
# 按照從一般到特殊的原則分組 
import 語(yǔ)句,先 import 標(biāo)準(zhǔn)庫(kù),然后 import 第三方庫(kù),最后 import 程序中的自定義庫(kù)  
# 在不同分組的 import 語(yǔ)句之間加空行   # 每個(gè) import 語(yǔ)句只導(dǎo)入一個(gè)模塊    
import sys   
import time    
from PyQt.QtCore import SIGNAL, QTimer    #  在終端中使用中文字符  在文件頭部加上
# import sys   
# reload(sys)   
# sys.setdefaultencoding('utf-8')

import

1、系統(tǒng)庫(kù)的應(yīng)用

這里說(shuō)的系統(tǒng)庫(kù),一般是指python軟件自帶的庫(kù),不是從第三方安裝的庫(kù)。比如說(shuō),如果import sys了,會(huì)怎么打印。

>>> import sys
>>> print sys
<module 'sys' (built-in)>

這說(shuō)明sys庫(kù)很有可能就是嵌入在python里面的,根本沒(méi)有辦法刪除。那是不是所有的庫(kù)都是這樣呢,我們可以找os試一試:

>>> import os
>>> print os
<module 'os' from '/usr/local/Cellar/python/2.7.13/Frameworks/Python.framework/Versions/2.7/lib/python2.7/os.pyc'>

很明顯,這里的os庫(kù)是由pyc提供的,所以從優(yōu)先級(jí)來(lái)說(shuō),似乎sys還要更重要一些。

2、第三方庫(kù)

所謂第三方庫(kù),就是通過(guò)python setup.py install安裝、pip安裝或者通過(guò)apt-get install安裝的庫(kù)。這類庫(kù)很多,我自己常用的就有webpy、twisted、cv2、sklearn、wxpython,這些lib無(wú)一例外,都是以pyc的形式存在的。比如說(shuō),我們看一下webpy:

>>> import web
>>> print web
<module 'web' from '/usr/local/lib/python2.7/site-packages/web.py-0.40.dev0-py2.7.egg/web/__init__.pyc'>

3、本地目錄文件引用

如果是本地文件引用,其實(shí)方法也很簡(jiǎn)單,直接import一下就可以了。如果import成功,python就會(huì)生成對(duì)應(yīng)文件的pyc文件。比如說(shuō),exer1.py想引用一下exer2.py中的函數(shù),那么它可以這么做:

import exer2

或者是

from exer2 import *

其次,要注意的是,這種方法不光適用于python,也適用于動(dòng)態(tài)庫(kù)文件。我們知道,有的時(shí)候?yàn)榱藬U(kuò)展python功能,需要寫(xiě)c文件生成動(dòng)態(tài)庫(kù)供python使用。有興趣的同學(xué)可以參考這個(gè)鏈接。這個(gè)時(shí)候,如果需要引用動(dòng)態(tài)庫(kù)文件,直接import文件名就可以了。

4、引用子目錄文件

除了同級(jí)目錄引用之外,另外用的比較多的就是子目錄引用。比如說(shuō),exer1.py和sub目錄在一個(gè)文件夾下面,如果exer1.py想引用sub下面的exer2.py,那么它應(yīng)該怎么做呢?這個(gè)時(shí)候,一定要保證sub目錄下有__init__.py文件。

from sub import exer2

或者是,

from sub.exer2 import *

5、子目錄引用父目錄

有的時(shí)候,子目錄為了使用父目錄或者其他目錄(類似util目錄)的一些功能,常常要反向引用。這個(gè)時(shí)候,sys庫(kù)就派上了用場(chǎng)。假設(shè)exer1.py和sub目錄在同一級(jí),sub目錄下有一個(gè)exer2.py文件,這個(gè)時(shí)候exer2.py想引用exer1.py的功能,那么它可以這么操作:

import sys
sys.path.append('../')
import exer1

或者是,

import sys
sys.path.append('../')
from exer1 import *

6、交叉引用

如果有兩個(gè)文件交叉引用,這個(gè)時(shí)候我建議可以保留一個(gè)文件的引用,另外一個(gè)文件的引用可以放到函數(shù)下面來(lái)做,比如說(shuō)像這樣:

def process():
    import exer1
    exer1.add()

7、import文件的順序建議

關(guān)于python下import文件的順序,我個(gè)人的經(jīng)驗(yàn)是這樣安排比較合理一些,

built-in 系統(tǒng)庫(kù)

其他系統(tǒng)庫(kù)

第三方庫(kù)

子目錄庫(kù)

本地其他文件等等

看完了這篇文章,相信你對(duì)python頭文件的編程風(fēng)格有了一定的了解,想了解更多相關(guān)知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道,感謝各位的閱讀!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI