新聞中心
python中,如果自己寫的模塊與系統(tǒng)模塊重名,該怎么調(diào)用系統(tǒng)的模塊?
sys.path是一個list,存放了當前所有import搜索的路徑。
成都創(chuàng)新互聯(lián)是工信部頒發(fā)資質(zhì)IDC服務(wù)器商,為用戶提供優(yōu)質(zhì)的成都機柜租用服務(wù)
絕大多數(shù)情況下,首個元素是"",即空串,也就是說,當你import re的時候,首先搜索的是"re",這時候就會直接在當前目錄搜索到re。如下圖:
解決方法也有不止一個:
1,在當前目錄創(chuàng)建一個子文件夾,例如mine,在mine里放一個__init__.py,不用有代碼,空文件即可。使用的時候:import mine.re
2,在sys.path上做手腳,把第一個空串挪到最后面去:
import sys
sys.path = sys.path[1:]
sys.path.append("")
這樣當前目錄會跑到最后面去,從而達到最后搜索的目的。
不過這很可能有副作用,即你創(chuàng)建的模塊,不能和前面搜索路徑里的任何文件重名,否則會無法import你的模塊。
這也是為什么默認把當前路徑放在最前搜索的原因,因為是用戶自己寫的,顯然優(yōu)先級最高。
盡管就你的問題作出分析和提出一些可能的解決辦法,但是嚴重不建議在實際工程起和系統(tǒng)模塊重名的文件名,這是自找麻煩。
當然,研究探討它的實現(xiàn)原理,始終是值得肯定的。
最后強調(diào)一下,當你在當前文件夾創(chuàng)建了一個sys.py時,方法2不好用!
from urllib import request和import urlib.request的區(qū)別
Python中from urllib import request和import urlib.request的區(qū)別:
Python
from urllib import request
# access request directly.
mine = request()
import urllib.request
# used as urllib.request
mine = urllib.request()
它們實際上是沒有區(qū)別的,調(diào)用的時候有時候為了方便用上面的第一種方式。
Python里import * 是什么意思?
import adsl,那么代碼中調(diào)用的時候都是adsl.open()之類的,比如調(diào)用adsl中的foo函數(shù)(舉個栗子):adsl.foo()
而from adsl import * ,可以直接用foo()。
請教一下一個關(guān)于python的問題,如下:
class SMineCtrl(Structure): pass
ctrlData=SMineCtrl()
這樣可以,你那樣些不行,類裝載器需要解析完這個類的所有代碼行才會創(chuàng)建類對象,在解析到類里面的代碼行時還沒有這個類對象存在,無法創(chuàng)建這個對象的實例
新聞標題:mine函數(shù)python,mine的用法及例句
鏈接地址:http://fisionsoft.com.cn/article/hsipss.html