官术网_书友最值得收藏!

  • Python3.5從零開始學
  • 劉宇宙
  • 1757字
  • 2020-11-28 16:07:07

6.2 import的使用

語言的學習只有在不斷深入后才能進一步發(fā)現(xiàn)其中隱藏的驚人特性,即使是簡單的print函數(shù),在不斷使用后也會發(fā)現(xiàn)更多使用方式,import將帶你進入一個更快捷的編程模式。

6.2.1 import語句

在講解import語句之前先看一個示例:

        import math

        r=5
        print('半徑為5的圓的面積為:%.2f' %(math.pi*r**2))

保存文件名為import_test.py。在cmd命令窗口執(zhí)行如下命令:

        D:\python\workspace>python import_test.py
        半徑為5的圓的面積為:78.54

上面的程序使用了import語句。

import math的意思為從Python標準庫中引入math.py模塊,這是Python中定義的引入模塊的方法。import的標準語法如下:

import module1[, module2[, ... moduleN]]

表示允許一個import導入多個模塊,但各個模塊間需要用逗號隔開。

當解釋器遇到import語句時,如果模塊在當前搜索路徑就會被導入。搜索路徑是一個解釋器,會先搜索所有目錄的列表。

當我們使用import語句時,Python解釋器怎樣找到對應的文件呢?這涉及Python的搜索路徑,搜索路徑由一系列目錄名組成,Python解釋器會依次從這些目錄中尋找引入的模塊。看起來很像環(huán)境變量,事實上可以通過定義環(huán)境變量的方式確定搜索路徑。搜索路徑是在Python編譯或安裝時確定的,被存儲在sys模塊的path變量中。查看搜索路徑的方式如下:

        import sys

        print('Python的搜索路徑為:%s' % sys.path)

保存文件名為import_sys.py,在cmd命令窗口執(zhí)行結果如下:

        D:\python\workspace>python import_sys.py
        Python的搜索路徑為:['D:\\python\\workspace','E:\\python\\pythoninstall\\python
        35.zip','E:\\python\\pythoninstall\\DLLs','E:\\python\\pythoninstall\\lib','E:\\python\\pythoninstall',
    'E:\\python\\pythoninstall\\lib\\site-packages']

由以上輸出結果看到,sys.path輸出了一個列表,第一項輸出的是執(zhí)行文件所在的目錄,即我們執(zhí)行Python解釋器的目錄(如果是腳本,就是運行腳本所在的目錄)。

了解搜索路徑的概念后,可以在腳本中修改sys.path引入一些不在搜索路徑中的模塊。

上面我們初步引入了import語句,除了用import引入模塊外,還有另一種方式引入模塊,先看交互模式下輸入的示例:

        >>> from math import pi
        >>> print (pi)
        3.141592653589793

上面的操作使用了from math import pi的方式,這是什么意思呢?

在Python中,from語句可以從模塊中導入指定部分到當前命名空間中,語法如下:

from modname import name1[, name2[, ... nameN]]

例如,from math import pi語句就是從math模塊中導入pi到當前命名空間,該語句不會將math整個模塊導入。比如在math模塊中還有sin、exp函數(shù),在這個語句里這兩個函數(shù)都使用不了,而在導入整個math模塊的語句中可以使用。在交互模式下輸入:

        >>> import math
        >>>print(math.pi)       #math.pi可以被輸出
        3.141592653589793
        >>>print(math.sin(1))    #math.sin(1)可以被輸出
        0.8414709848078965
        >>>print(math.exp(1))    #math.exp(1)可以被輸出
        2.718281828459045
        >>> from math import pi
        >>>print (pi)           #pi可以被輸出
        3.141592653589793
        >>>print(sin(1))        #sin(1)不可以被輸出
        Traceback (most recent call last):
          File "<pyshell#51>", line 1, in <module>
            print(sin(1))
        NameError: name 'sin' is not defined
        >>>print(exp(1))        #exp(1)不可以被輸出
        Traceback (most recent call last):
          File "<pyshell#52>", line 1, in <module>
            print(exp(1))
        NameError: name 'exp' is not defined

由以上輸出結果可知,如果導入模塊,就會得到模塊中所有對象;如果指定導入某個對象,就只能得到該對象。

這樣做的好處是什么呢?先看如下示例:

        >>>import math
        >>> print(math.pi)
        3.141592653589793
        >>> print(pi)
        Traceback (most recent call last):
          File "<pyshell#3>", line 1, in <module>
            print(pi)
        NameError: name 'pi' is not defined
        >>> from math import pi
        >>> print(pi)
        3.141592653589793

由上面的輸出結果可知,如果在導入math模塊時訪問pi對象,需要使用math.pi,直接使用pi訪問不了,會報錯。使用import語句后,可以直接訪問pi對象,不需要加上模塊名進行訪問。

如果要訪問模塊中多個對象,是否需要一個一個導入呢?如果要訪問math中的pi和sin,是否要寫兩個from math import語句?例如:

        from math import pi
        from math import sin

當然不用,可以直接使用如下語句:

        from math import pi, sin

可以從一個導入語句導入多個函數(shù),多個函數(shù)之間用逗號分割。

如果要訪問模塊中多個對象,是否需要一個一個導入呢?當然不用,可以直接使用如下語句:

        from math import *

使用該語句可以將math中所有對象都引入,比如上面幾個報錯的情況就可以成功輸出結果了,例如:

        >>> from math import *
        >>>print(pi)               #pi可以被輸出
        3.141592653589793
        >>>print(sin(1))            #sin(1)可以被輸出
        0.8414709848078965
        >>>print(exp(1))            #exp(1)可以被輸出
        2.718281828459045

由輸出結果看到,pi、sin、exp等函數(shù)都可以被正確輸出了。這是一個簡單地將項目中所有模塊都導入的方法。在實際開發(fā)中,這種聲明不建議過多使用,這樣不利于編寫清晰、簡單的代碼。只有想從給定模塊導入所有功能時才使用這種方式。

除了上述幾種方式外,還可以為模塊取別名,例如:

        >>> import math as m
        >>> m.pi
        3.141592653589793

由輸出結果看到,給模塊取別名的方式為:在導出模塊的語句末尾增加一個as子句,as后面跟上別名名稱。

既然可以為模塊取別名,當然也可以為函數(shù)取別名,例如:

        >>> from math import pi as p
        >>> p
        3.141592653589793

由輸出結果可知,我們?yōu)閜i取了別名為p,為函數(shù)取別名的方式和為模塊取別名的方式類似,也是在語句后面加上as, as后跟上別名名稱。

6.2.2 使用逗號輸出

我們在前面的章節(jié)已經看到許多使用逗號輸出的示例,例如:

        >>> student=’小智’
        >>> print(’學生稱呼:', student)
        學生稱呼: 小智

這種方式還可以輸出多個表達式,只要將多個表達式用逗號隔開就行,例如:

        >>> greeting=’大家好!'
        >>> intriduce=’我叫小智,'
        >>> comefrom=’我來自智慧城市。'
        >>> print(greeting, intriduce, comefrom)
        大家好! 我叫小智,我來自智慧城市。

由輸出結果看到,不使用格式化的方式也可以同時輸出文本和變量值。

主站蜘蛛池模板: 婺源县| 婺源县| 柳州市| 福贡县| 九龙坡区| 滨海县| 岐山县| 天台县| 巴东县| 河西区| 平顺县| 佛学| 大安市| 芮城县| 淮北市| 沙洋县| 卫辉市| 宁远县| 尉氏县| 惠安县| 丽水市| 和硕县| 丰镇市| 沭阳县| 嵊州市| 天峻县| 临武县| 垦利县| 翁源县| 浑源县| 夏河县| 美姑县| 双流县| 兰考县| 安泽县| 新余市| 丰顺县| 双鸭山市| 大厂| 邵武市| 外汇|