python中絕對導入用法,python中向文件寫入的方法

本文目錄一覽:

python使用from能導入模版,使用import不能導入模版

其實也可以把文件夾定義為包,在當前文件夾放一個 __init__.py 的空文件

這樣就可以絕對導入 import module_name.import1

或是相對導入 import .import1

python導入模塊的方法有哪些

方法一

import modname

模塊是指一個可以交互使用,或者從另一Python 程序訪問的代碼段。只要導入了一個模塊,就可以引用它的任何公共的函數、類或屬性。模塊可以通過這種方法來使用其它模塊的功能。

用import語句導入模塊,就在當前的名稱空間(namespace)建立了一個到該模塊的引用.這種引用必須使用全稱,也就是說,當使用在被導入模塊中定義的函數時,必須包含模塊的名字。所以不能只使用 funcname,而應該使用 modname.funcname

方法二

from modname import funcname

from modname import fa, fb, fc

或者

from modname import *

與第1種方法的區別:funcname 被直接導入到本地名字空間去了,所以它可以直接使用,而不需要加上模塊名的限定* 表示,該模塊的所有公共對象(public objects)都被導入到 當前的名稱空間,也就是任何只要不是以”_”開始的東西都會被導入。

modname沒有被定義,所以modname.funcname這種方式不起作用。並且,如果funcname如果已經被定義,它會被新版本(該導入模塊中的版本)所替代。如果funcname被改成指向其他對象,modname不能不會覺察到。

建議:

1)如果你要經常訪問模塊的屬性和方法,且不想一遍又一遍地敲入模塊名,使用 from module import

2)如果你想要有選擇地導入某些屬性和方法,而不想要其它的,使用 from module import

3)如果模塊包含的屬性和方法與你的某個模塊同名,你必須使用import module來避免名字衝突

4)盡量少用 from module import * ,因為判定一個特殊的函數或屬性是從哪來的有些困難,並且會造成調試和重構都更困難。

方法三

內建函數__import__()

除了前面兩種使用import關鍵字的方法以外,我們還可以使用內建函數 __import__() 來導入 module。兩者的區別是,import 後面跟的必須是一個類型(type),而__import__() 的參數是一個字符串,這個字符串可能來自配置文件,也可能是某個表達式計算結果。例如:

mymodule = __import__ (’module_name’)

附註:

1)模塊的內容都放在一個模塊文件中,如 mymodule 的內容應該放在PYTHONPATH 目錄下的一個mymodule.py中,C實現的除外

2)包可以將幾個模塊名稱空間組織起來, 如A.b 就表示在包A中的一個子模塊b

可以單獨導入某一個子模塊,如Python文檔中給出的例子

import sound.effects.echo

這樣必須使用全稱對裡面的對象進行引用,如

sound.effects.echo.echofilter(input, output, delay=0.7, atten=4)

還可以使用下面的語句來加載echo子模塊

from Sound.Effects import echo

它在沒有包前綴的情況下也可以使用, 所以它可以如下方式調用:

echo.echofilter(input, output, delay=0.7, atten=4)

不主張從一個包或模塊中用import * 導入所有模塊,因為這樣的通常會導致可讀性很差。

from Package import specific_submodule的用法並沒有錯,實際上這還是推薦的用法,除非導入的模塊需要使用其它包中的同名子模塊(the importing module needs to use submodules with the same name from different packages).

綜上所述,一般情況應該使用import , 但有幾個例外

1)module文檔告訴你要用from-import的

2)導入一個包組件。需要一個包裡面的某個子模塊,一般用from A.b import c比import A.b.c 更方便 且不會冒混淆的危險.

Python 中的import 機制

解釋器 在執行語句時,遵循作用域原則。因為這和作用域有關係, 如果在頂層導入模塊,此時它的作用域是全局的;如果在函數內部導入了模塊,那它的作用域只是局部的 ,不能被其它函數使用。如果其它函數也要用到這個模塊,還需要再次導入比較麻煩。

在用import語句導入模塊時最好按照這樣的順序:

絕對路徑 就是文件的真正存在的路徑,是指從硬盤的根目錄(盤符)開始,進行一級級目錄指向文件。

相對路徑 就是以當前文件為基準進行一級級目錄指向被引用的資源文件。

以下是常用的表示當前目錄和當前目錄的父級目錄的標識符

形如from moduleB import ClassB語句,根據Python內部import機制,執行細分步驟:

總結:from moduleB import ClassB有兩個過程,先from module,後import ClassB。

當然將moduleA.py語句 from moduleB import ClassB改為:import moduleB,將在第二次執行moduleB.py語句from moduleA import ClassA時報錯:ImportError: cannot import name ‘classA’

在一個文件下同時有 init .py文件、和其他模塊文件時,該文件夾即看作一個包(package)。包的導入 和模塊導入基本一致,只是導入包時,會執行這個 init .py,而不是模塊中的語句。

而且,如果只是單純地導入包【形如:import xxx】,而包的 init .py中有沒有明確地的其他初始化操作,則:此包下的模塊 是不會被自動導入的。當然該包是會成功導入的,並將包名稱放入當前.py的Local命名空間中。

參考文章:

Python中import機制

Python 3.x可能是史上最詳解的【導入(import)】

在Python中以絕對路徑或者相對路徑導入文件的方法

Python的模塊引用和查找路徑

如何在python3中正確導入同一目錄下的模塊

因為要absolute_import,這樣import webchat_sdk.basic應該沒問題了。

在 Python 2 裡面可以使用 import foo來導入相同目錄包下的模塊foo,在 Python 3 裡面就是導入的項目根目錄(最上層有__init__.py的目錄)包foo。 也就是說 Python 3 默認就是絕對導入的,import .foo只是相對於絕對導入來說的,並不是相對導入。

python使用相對導入的具體意義?

除了讓包內導入更加顯式,這個功能的一部分設計初衷是,為了幫助腳本解決同名文件出現在模塊搜索路徑上多個不同位置時的二義性。考慮包目錄,這定義了一個名為mypkg 的包,其中含有名為mypkg.main和mypkg.string 的模塊。現在,假設模塊main試圖導入名為string的模塊。在 Python 2.X和更早版本中,Python會先尋找mypkg目錄以執行相對導入。這會找到並導入位於該處的string.py文件,將其賦值給mypkg.main模塊命名空間內的名稱string。

不過,這一導入的本意可能是要導入Python標準庫的string模塊。可惜的是,在這些Python版本中,無法直接忽略mypkg.string 去尋找位於模塊搜索路徑更右側的標準庫中的string模塊。此外,我們無法使用完整包導入路徑來解決這個問題,因為我們無法依賴在每台機器上的標準鏈接庫路徑。換句話說,包中的簡單導入可能具有二義性而且容易出錯。在包內,我們無法確定imports pam語句指的是包內的模塊還是包外的模塊。一種可能的後果是,一個局部的模塊或包會在不經意間隱藏了sys.path 上的另一個模塊。

在實踐中,Python使用者可以避免為他們自己的模塊重複使用標準庫模塊的名稱(如果需要標準string庫,就不要把新的模塊命名為string)。但是,一個包還是有可能意外地隱藏標準庫模塊。再者,Python 以後可能新增標準庫模塊,而其名稱可能剛好就和自己的一個模塊同名。而依賴於沒有點號開頭相對導入的程序代碼同樣也不容易理解,因為讀者可能對希望使用哪個模塊而感到困惑。所以我們最好能在代碼中顯式地指出導入的解析過程。

python如何導入函數

python的內建函數即是python自帶的函數,這種函數不需要定義,並且不同的內建函數具有不同的功能,可以直接使用。

以下是部分內建函數用法及說明

1、abs(),返回數字的絕對值。

2、all(),如果集合中所有元素是true或集合為空集合,返回True。

3、any(),如果集合中有一項元素是true,返回True;空集合為False

4、ascii(), 返回一個表示對象的字符串。

5、bin(),將整數轉換為前綴為“0b”的二進制字符串。

6、bool(),返回一個布爾值,即True或者之一False。

7、bytearray(),返回一個新的字節數組。

8、callable(對象)判斷對象參數是否可被調用(可被調用指的是對象能否使用()括號的方法調用)

9、chr(),返回表示Unicode代碼點為整數i的字符的字符串。與ord()函數相反。

推薦學習《python教程》

10、classmethod,將方法轉換為類方法。

11、compile,將源代碼編譯為代碼或AST對象。代碼對象可以由exec()或執行eval()。 source可以是普通字符串,字節字符串或AST對象。

12、dic(),創建一個字典

13、divmod(a,b),將兩個數作為參數,並在使用整數除法時返回由商和餘數組成的一對數

14、enumerate(iterable,start = 0)

enumerate是枚舉、列舉的意思

對於一個可迭代的(iterable)/可遍歷的對象(如列表、字符串),enumerate將其組成一個索引序列,利用它可以同時獲得索引和值

enumerate多用於在for循環中得到計數

15、eval,將一個字符串變為字典

16、exec(object [, globals[, locals]])exec語句用來執行儲存在字符串或文件中的Python語句

17、filter(功能,可迭代)

filter函數用於過濾序列

filter()把傳入的函數依次作用於每個元素,然後根據返回值是True還是False決定保留還是丟棄該元素。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/293251.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-26 13:13
下一篇 2024-12-26 13:13

相關推薦

  • Python列表中負數的個數

    Python列表是一個有序的集合,可以存儲多個不同類型的元素。而負數是指小於0的整數。在Python列表中,我們想要找到負數的個數,可以通過以下幾個方面進行實現。 一、使用循環遍歷…

    編程 2025-04-29
  • 如何查看Anaconda中Python路徑

    對Anaconda中Python路徑即conda環境的查看進行詳細的闡述。 一、使用命令行查看 1、在Windows系統中,可以使用命令提示符(cmd)或者Anaconda Pro…

    編程 2025-04-29
  • Python計算陽曆日期對應周幾

    本文介紹如何通過Python計算任意陽曆日期對應周幾。 一、獲取日期 獲取日期可以通過Python內置的模塊datetime實現,示例代碼如下: from datetime imp…

    編程 2025-04-29
  • Python中引入上一級目錄中函數

    Python中經常需要調用其他文件夾中的模塊或函數,其中一個常見的操作是引入上一級目錄中的函數。在此,我們將從多個角度詳細解釋如何在Python中引入上一級目錄的函數。 一、加入環…

    編程 2025-04-29
  • Python周杰倫代碼用法介紹

    本文將從多個方面對Python周杰倫代碼進行詳細的闡述。 一、代碼介紹 from urllib.request import urlopen from bs4 import Bea…

    編程 2025-04-29
  • Python字典去重複工具

    使用Python語言編寫字典去重複工具,可幫助用戶快速去重複。 一、字典去重複工具的需求 在使用Python編寫程序時,我們經常需要處理數據文件,其中包含了大量的重複數據。為了方便…

    編程 2025-04-29
  • 蝴蝶優化算法Python版

    蝴蝶優化算法是一種基於仿生學的優化算法,模仿自然界中的蝴蝶進行搜索。它可以應用於多個領域的優化問題,包括數學優化、工程問題、機器學習等。本文將從多個方面對蝴蝶優化算法Python版…

    編程 2025-04-29
  • python強行終止程序快捷鍵

    本文將從多個方面對python強行終止程序快捷鍵進行詳細闡述,並提供相應代碼示例。 一、Ctrl+C快捷鍵 Ctrl+C快捷鍵是在終端中經常用來強行終止運行的程序。當你在終端中運行…

    編程 2025-04-29
  • Python清華鏡像下載

    Python清華鏡像是一個高質量的Python開發資源鏡像站,提供了Python及其相關的開發工具、框架和文檔的下載服務。本文將從以下幾個方面對Python清華鏡像下載進行詳細的闡…

    編程 2025-04-29
  • Python程序需要編譯才能執行

    Python 被廣泛應用於數據分析、人工智能、科學計算等領域,它的靈活性和簡單易學的性質使得越來越多的人喜歡使用 Python 進行編程。然而,在 Python 中程序執行的方式不…

    編程 2025-04-29

發表回復

登錄後才能評論