您好,登錄后才能下訂單哦!
這篇文章主要講解了“absolute_import的作用是什么”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“absolute_import的作用是什么”吧!
從字面意思,可以清晰的知道這個函數的作用是絕對路徑導入,反之對應的就是相對路徑。
絕對導入和相對導入之間的差異僅在從包導入模塊和從包導入其他子模塊時才起作用。拿下面的e.g.來說,在pkg下面有一個string.py
文件,與python標準庫中的string模塊同名
,里面的main.py
文件有引用string模塊
,當我們從pkg包
開始導入main.py
的時候,如果沒有absolute_import
,就會引用pkg
下的string模塊
,反之,就會從頂層路徑查找string標準庫
。
liang@iZ250k0mjlbZ:~$ mkdir pkg liang@iZ250k0mjlbZ:~$ touch pkg/__init__.py liang@iZ250k0mjlbZ:~$ touch pkg/string.py liang@iZ250k0mjlbZ:~$ echo 'import string;print(string.ascii_uppercase)' > pkg/main1.py liang@iZ250k0mjlbZ:~$ python Python 2.7.12 (default, Dec 4 2017, 14:50:18) [GCC 5.4.0 20160609] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> import pkg.main1.py Traceback (most recent call last): File "<stdin>", line 1, in <module> File "pkg/main1.py", line 1, in <module> import string;print(string.ascii_uppercase) AttributeError: 'module' object has no attribute 'ascii_uppercase' >>> import pkg.main1 Traceback (most recent call last): File "<stdin>", line 1, in <module> File "pkg/main1.py", line 1, in <module> import string;print(string.ascii_uppercase) AttributeError: 'module' object has no attribute 'ascii_uppercase' >>> import pkg.string >>> exit() liang@iZ250k0mjlbZ:~$ echo 'from __future__ import absolute_import;import string;print(string.ascii_uppercase)' > pkg/main2.py liang@iZ250k0mjlbZ:~$ python Python 2.7.12 (default, Dec 4 2017, 14:50:18) [GCC 5.4.0 20160609] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> import pkg.main2 ABCDEFGHIJKLMNOPQRSTUVWXYZ >>> exit()
字面意思,可以簡單的看出是針對于unicode編碼
的,這個就涉及到python的編碼歷史問題了,python2默認是ascii編碼,對于unicode編碼
的字符串,必須在簽名添加u
,e.g. u"測試",在python3解決了這個令人頭疼的問題,默認編碼采用了unicode編碼
,此庫的作用就是為了python2向python3過渡,一旦引入,當前文件下的編碼默認就是unicode
,下面的例子直接展示了它的用途:
Python 2.7.12 (default, Dec 4 2017, 14:50:18) [GCC 5.4.0 20160609] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> from __future__ import unicode_literals >>> a=u"aaa" >>> a u'aaa' >>> a="aaa" >>> a u'aaa' >>>
感謝各位的閱讀,以上就是“absolute_import的作用是什么”的內容了,經過本文的學習后,相信大家對absolute_import的作用是什么這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。