色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

誰能透徹地講講Python模塊的檢索順序

呂致盈2年前14瀏覽0評論

誰能透徹地講講Python模塊的檢索順序?

搜索順序應該是?

內置模塊 -》主目錄 -》PYTHONPATH環境變量 -》標準庫 -》.pth文件指定的內容

所以如果主目錄里有一個自定義的模塊文件文件,應該會先加載,然后后面標準庫的模塊文件可能就不會加載了,也就是隱藏了。

還是實驗一下:

創建一個sys.py在主目錄下,以下是在windows的py3.5上實驗的,sys.py內容:

# filename sys.py in current working directory def func(): print(‘This is my own sys.py‘) func()

這樣按理說在cmd中運行python然后import sys,會打印一句:

This is my own sys.py

但事實上并不會,還是加載了built-in的sys,直接輸入sys能看到:

>>> sys <module ‘sys‘ (built-in)>

既然是sys是內置的,試試os,同樣的方法,一樣的結果:

>>> os <module ‘os‘ from ‘C:\\Program Files\\Python35\\lib\\os.py‘>

因為os在標準庫里面,應該是當前目錄下的os.py會覆蓋了(隱藏了)庫里的os模塊才對。最后試一下__future__,才是可以的:

>>> import __future__ this is my __future__

這是為什么?我想應該是在運行python命令時,os作為一些初始化工作時被導入了,所以其實再手動import os,根本沒有重載。如何證明呢?我看到python手冊里有說,site.py在初始化的時候會自動運行,所以先看看他的內容,確實有:

import sys

import os

那么我在這兩句之前加一句,并保存退出:

import __future__

退出cmd中的python,重新運行python命令,再導入試試:

>>> import __future__

這次就不會輸出:

this is my __future__

了,即使我在當前目錄定義了這個__future__.py,所以說的確是已經加載過了。