import 導入語句

import 導入語句
import 語句用于從模塊中導入子模塊隧魄,類,函數(shù)等。語法大致有三種:

第一種

import module as name, module as name, ...

第二種

import 之后可以置于一個元組

from module import identifier as name, identifier as name, ...

第三種

from module import *
1
2
3
4
5
6
7
8
9
模塊 module 可以是高層級到低層級用屬性表示法引用的模塊返咱,例如 pandas.core.series。

as 及其后的別名 name 是可選的牍鞠。

語句可以導入單個或多個對象咖摹,用逗號分隔實際是多個子句。

第一種導入方法难述,如果成功獲取到模塊萤晴,則可以通過以下方式之一在 import 語句所在命名空間中使用它:

如果被導入模塊是最高層級模塊,模塊名被綁定胁后;
如果導入的模塊不是最高層級的模塊店读,則該模塊的最高層級模塊名被綁定,該模塊必須使用完整限定名訪問攀芯;
如果有 as屯断,則 as 之后的別名被綁定,模塊名不綁定侣诺。
如果沒有指定模塊殖演,引發(fā) ModuleNotFoundError。

import pandas
pandas
1
2
<module 'pandas' from 'F:\anaconda\lib\site-packages\pandas\init.py'>
1
del pandas
import pandas.core.series
pandas, pandas.core, pandas.core.series
1
2
3
(<module 'pandas' from 'F:\anaconda\lib\site-packages\pandas\init.py'>,
<module 'pandas.core' from 'F:\anaconda\lib\site-packages\pandas\core\init.py'>,
<module 'pandas.core.series' from 'F:\anaconda\lib\site-packages\pandas\core\series.py'>)
1
2
3
series # 必須完成限定名訪問
1


NameError Traceback (most recent call last)

<ipython-input-6-2859777d6f2b> in <module>
----> 1 series

NameError: name 'series' is not defined
1
2
3
4
5
6
7
8
9
del pandas
import pandas.core.series as pds
pds
1
2
3
<module 'pandas.core.series' from 'F:\anaconda\lib\site-packages\pandas\core\series.py'>
1
pandas # 只能使用別名訪問
1


NameError Traceback (most recent call last)

<ipython-input-8-609b6d5922fb> in <module>
----> 1 pandas

NameError: name 'pandas' is not defined
1
2
3
4
5
6
7
8
9
def f():
import pandas # 局部命名空間導入
pandas # 全局命名空間不能訪問
1
2
3


NameError Traceback (most recent call last)

<ipython-input-10-0b76d1984901> in <module>
1 def f():
2 import pandas # 局部命名空間導入
----> 3 pandas

NameError: name 'pandas' is not defined
1
2
3
4
5
6
7
8
9
10
11
第二種導入方法年鸳,如果成功獲取到模塊趴久,from 之后的模塊名不會被綁定,對于 import 子句導入的屬性或子模塊搔确,如果有 as 子句彼棍,則只能使用其指定的別名使用它,否則使用該屬性或子模塊的名稱 identifier 使用它妥箕。

如果屬性或子模塊不存在滥酥,或不能導入,引發(fā) ImportError畦幢。

from pandas.core import base
base
1
2
<module 'pandas.core.base' from 'F:\anaconda\lib\site-packages\pandas\core\base.py'>
1
pandas.core # 只導入了該模塊下的子模塊 base
1


NameError Traceback (most recent call last)

<ipython-input-2-37462de79a89> in <module>
----> 1 pandas.core

NameError: name 'pandas' is not defined
1
2
3
4
5
6
7
8
9

導入多個可置于元組中

from random import (random as r1,
randint as r2,)
r1, r2
1
2
3
4
(<function Random.random()>,
<bound method Random.randint of <random.Random object at 0x000001E531A14580>>)
1
2

pandas 下沒有 base坎吻,導入錯誤

from pandas import base
1
2


ImportError Traceback (most recent call last)

<ipython-input-7-7903c4949085> in <module>
----> 1 from pandas import base

ImportError: cannot import name 'base' from 'pandas' (F:\anaconda\lib\site-packages\pandas_init_.py)
1
2
3
4
5
6
7
8
9
第三種導入方法,則在模塊中定義的全部公有名稱都將綁定到 import 語句所在的命名空間宇葱。

公有名稱是由在模塊的命名空間中檢測一個名為 all 的變量來確定的瘦真;如果 all 沒有被定義刊头,則公有名稱的集合將包含模塊的命名空間中找到的所有不以下劃線字符 _ 打頭的名稱。

from random import *
randint
1
2
<bound method Random.randint of <random.Random object at 0x0000025E1DCC8180>>
1
當指定要導入哪個模塊時诸尽,你不必指定模塊的絕對名稱原杂。當一個模塊或包被包含在另一個包之中時,可以在同一個最高層級包中進行相對導入您机,而不必提及包名稱穿肄。

通過在 from 之后指定的模塊或包中使用前綴點號,你可以在不指定確切名稱的情況下指明在當前包層級結構中要上溯多少級际看。一個前綴點號表示是執(zhí)行導入的模塊所在的當前包咸产,兩個點號表示上溯一個包層級。三個點號表示上溯兩級仲闽,依此類推脑溢。例如:

package/
init.py
subpackage1/
init.py
moduleX.py
moduleY.py
subpackage2/
init.py
moduleZ.py
moduleA.py
1
2
3
4
5
6
7
8
9
10
假設當前位置是 subpackage1/moduleX.py,則:

from .moduleY import spam
from . import moduleY
from ..subpackage1 import moduleY
from ..subpackage2.moduleZ import eggs
from ..moduleA import foo
1
2
3
4
5
都是有效的赖欣。

?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末屑彻,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子顶吮,更是在濱河造成了極大的恐慌社牲,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,948評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件云矫,死亡現(xiàn)場離奇詭異膳沽,居然都是意外死亡,警方通過查閱死者的電腦和手機让禀,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,371評論 3 385
  • 文/潘曉璐 我一進店門挑社,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人巡揍,你說我怎么就攤上這事痛阻。” “怎么了腮敌?”我有些...
    開封第一講書人閱讀 157,490評論 0 348
  • 文/不壞的土叔 我叫張陵阱当,是天一觀的道長。 經(jīng)常有香客問我糜工,道長弊添,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,521評論 1 284
  • 正文 為了忘掉前任捌木,我火速辦了婚禮油坝,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己澈圈,他們只是感情好彬檀,可當我...
    茶點故事閱讀 65,627評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著瞬女,像睡著了一般窍帝。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上诽偷,一...
    開封第一講書人閱讀 49,842評論 1 290
  • 那天坤学,我揣著相機與錄音,去河邊找鬼渤刃。 笑死拥峦,一個胖子當著我的面吹牛贴膘,可吹牛的內(nèi)容都是我干的卖子。 我是一名探鬼主播,決...
    沈念sama閱讀 38,997評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼刑峡,長吁一口氣:“原來是場噩夢啊……” “哼洋闽!你這毒婦竟也來了?” 一聲冷哼從身側響起突梦,我...
    開封第一講書人閱讀 37,741評論 0 268
  • 序言:老撾萬榮一對情侶失蹤诫舅,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后宫患,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體刊懈,經(jīng)...
    沈念sama閱讀 44,203評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,534評論 2 327
  • 正文 我和宋清朗相戀三年娃闲,在試婚紗的時候發(fā)現(xiàn)自己被綠了虚汛。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,673評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡皇帮,死狀恐怖卷哩,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情属拾,我是刑警寧澤将谊,帶...
    沈念sama閱讀 34,339評論 4 330
  • 正文 年R本政府宣布,位于F島的核電站渐白,受9級特大地震影響尊浓,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜纯衍,卻給世界環(huán)境...
    茶點故事閱讀 39,955評論 3 313
  • 文/蒙蒙 一栋齿、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦褒颈、人聲如沸柒巫。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,770評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽堡掏。三九已至,卻和暖如春刨疼,著一層夾襖步出監(jiān)牢的瞬間泉唁,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,000評論 1 266
  • 我被黑心中介騙來泰國打工揩慕, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留亭畜,地道東北人。 一個月前我還...
    沈念sama閱讀 46,394評論 2 360
  • 正文 我出身青樓迎卤,卻偏偏與公主長得像拴鸵,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子蜗搔,可洞房花燭夜當晚...
    茶點故事閱讀 43,562評論 2 349

推薦閱讀更多精彩內(nèi)容