国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【Python 程序設(shè)計(jì)】包和數(shù)據(jù)人員入門【01/8】

這篇具有很好參考價(jià)值的文章主要介紹了【Python 程序設(shè)計(jì)】包和數(shù)據(jù)人員入門【01/8】。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

一、說明

????????一個(gè)堅(jiān)實(shí)的Python項(xiàng)目的基礎(chǔ)是掌握模塊,包和導(dǎo)入。 以下文章是有關(guān) Python 數(shù)據(jù)工程系列文章的一部分,旨在幫助數(shù)據(jù)工程師、數(shù)據(jù)科學(xué)家、數(shù)據(jù)分析師、機(jī)器學(xué)習(xí)工程師或其他剛接觸 Python 的人掌握基礎(chǔ)知識(shí)。
????????迄今為止,本初學(xué)者指南包括:
第 1 部分:Python 包探討了 Python 模塊、Python 包的基礎(chǔ)知識(shí)以及如何將模塊導(dǎo)入您自己的項(xiàng)目?!綪ython 程序設(shè)計(jì)】包和數(shù)據(jù)人員入門【01/8】?
第 2 部分:介紹了依賴項(xiàng)管理和虛擬環(huán)境?!綪ython 程序設(shè)計(jì)】數(shù)據(jù)人員入門【02/8】
第 3 部分: 項(xiàng)目的最佳實(shí)踐,涵蓋了構(gòu)建項(xiàng)目的 9 個(gè)最佳實(shí)踐和示例?!綪ython程序設(shè)計(jì)】 項(xiàng)目的最佳實(shí)踐【03/8】
第 4 部分: Dagster 管道,我們探討了設(shè)置 Dagster 項(xiàng)目以及數(shù)據(jù)資產(chǎn)的關(guān)鍵概念?!綪ython程序設(shè)計(jì)】 從 Python 項(xiàng)目到 Dagster Pipelines【04/8】
第 5 部分:我們將介紹環(huán)境變量的重要性以及如何使用它們?!綪ython程序設(shè)計(jì)】Python 中的環(huán)境變量【05/8】
第 6 部分:類型提示,或類型提示如何減少錯(cuò)誤。
第7 部分:模式,或?qū)W習(xí)設(shè)計(jì)模式,它們是軟件設(shè)計(jì)中常見問題的可重用解決方案?!綪ython程序設(shè)計(jì)】 工廠模式【07/8】

?

????????Dagster運(yùn)行在Python上,大多數(shù)對(duì)Python有基本了解的數(shù)據(jù)工程師或開發(fā)人員都可以快速啟動(dòng)并運(yùn)行簡(jiǎn)單的管道。但是一些不太熟悉Python的用戶發(fā)現(xiàn)Python包有點(diǎn)令人頭疼。

????????因此,讓我們談?wù)勈裁词?Python 包以及如何使用它們。我們將介紹特定主題,這些主題將幫助你了解構(gòu)建 Python 項(xiàng)目所涉及的內(nèi)容,以及這如何轉(zhuǎn)換為更復(fù)雜的生成,例如數(shù)據(jù)管道和業(yè)務(wù)流程協(xié)調(diào)程序。在后面的文章中,我們將看到這些概念如何應(yīng)用于Dagster。

????????如果您只使用過現(xiàn)有的代碼庫或?Jupyter 筆記本,那么從頭開始打包代碼可能會(huì)讓人不知所措。什么是__init__.py文件,何時(shí)應(yīng)使用它?什么是相對(duì)進(jìn)口與絕對(duì)進(jìn)口?讓我們潛入!?

二、什么是 Python 包?

????????我們將 Python 代碼放入包中,因?yàn)樗梢暂p松地在 Python 社區(qū)中共享和重用代碼。包只是文件和目錄的集合,其中包括我們稍后將檢查的代碼、文檔和其他必要文件。

????????當(dāng)我們想要重用復(fù)雜的代碼時(shí),我們使用 Python 包而不是腳本文件和 Jupyter 筆記本。使用腳本文件,代碼可能會(huì)變得混亂且難以維護(hù),而筆記本通常用于探索性工作,但不容易重用。

????????您可以將 Python 包視為一個(gè)獨(dú)立的“項(xiàng)目”。一個(gè)項(xiàng)目可以包含多個(gè)模塊,每個(gè)模塊都包含一組特定的相關(guān)函數(shù)和變量。因此,這使您可以更輕松地將所需“項(xiàng)目”中的工具嵌入到您自己的代碼中。

2.1 從模塊開始

????????模塊是 Python 包的構(gòu)建塊。模塊是包含定義和語句的單個(gè) Python 文件。它們提供了一種將代碼結(jié)構(gòu)化為邏輯單元并在多個(gè)項(xiàng)目中重用代碼的方法。

????????若要在代碼中使用模塊,請(qǐng)使用 import 語句。例如,如果您有一個(gè)名為 mymodule.py的模塊,則可以通過以下 import 語句在代碼中使用它的函數(shù)和變量:

import mymodule

????????導(dǎo)入模塊后,可以使用點(diǎn) () 表示法訪問其函數(shù)和變量。例如,如果 mymodule.py 文件有一個(gè)名為.greet的函數(shù),則可以在代碼中使用它,如下所示:

import mymodule
mymodule.greet("John")

????????讓我們創(chuàng)建自己的示例模塊來說明這個(gè)概念。創(chuàng)建一個(gè)名為examplemodule.py的文件,并向其中添加以下代碼:

def greet(name):
    print("Hello, " + name + "!")
def add(a, b):
    return a + b

????????在這里,我們?cè)谖募卸x了兩個(gè)函數(shù)greetadd?,F(xiàn)在可以導(dǎo)入examplemodule.py這些函數(shù)并在代碼的其他部分中使用。???????

2.2 從模塊到包

????????隨著代碼的增長(zhǎng),在單個(gè)模塊中管理和維護(hù)所有代碼可能會(huì)變得困難。提供了一種將代碼組織和拆分為多個(gè)模塊的方法,同時(shí)仍保持所有內(nèi)容井井有條且可訪問。

????????要?jiǎng)?chuàng)建包,只需創(chuàng)建一個(gè)目錄并在其中放置一個(gè)或多個(gè)模塊。該目錄應(yīng)包含一個(gè)名為 __init__.py的特殊文件,該文件告訴 Python 此目錄是一個(gè)包,應(yīng)按包處理。該文件可以留空,也可以包含導(dǎo)入包時(shí)將執(zhí)行的代碼。我們將在下面更詳細(xì)地解釋???????__init__.py文件。

????????讓我們將上一節(jié)中的示例模塊重構(gòu)為包。創(chuàng)建一個(gè)名為examplepackage的目錄并將文件???????examplemodule.py移動(dòng)到其中。然后,創(chuàng)建一個(gè)在examplepackage目錄中調(diào)用的__init__.py文件。??????????????

您的文件結(jié)構(gòu)現(xiàn)在應(yīng)如下所示:

examplepackage/
    __init__.py
    examplemodule.py

????????現(xiàn)在,您可以在代碼中從文件中導(dǎo)入函數(shù),如下所示:examplemodule.py

import examplepackage.examplemodule

examplepackage.examplemodule.greet("John")
examplepackage.examplemodule.add(1, 2)

????????在此示例中,我們已將文件examplemodule.py重構(gòu)為名為examplepackage 的包。文件examplemodule.py中的函數(shù)現(xiàn)在可以像以前一樣導(dǎo)入并在代碼中使用,但具有包提供的組織和模塊化的額外好處。??????????????

2.3 什么是__init__.py?

????????__init__.py是 Python 包中的一個(gè)特殊文件,用作包的入口點(diǎn)。它在導(dǎo)入包時(shí)執(zhí)行,其代碼可用于初始化包或設(shè)置任何必要的組件。該文件是可選的,但通常用于定義包的公共接口,使其他開發(fā)人員更容易理解和使用包。

????????在以前版本的 Python 中,需要__init__.py將目錄識(shí)別為包。但是,從 Python 3.3 開始,由于引入了 PEP 420,它是可選的,它允許在沒有__init__.py文件的情況下定義包。

????????下面是如何在包中使用的示例:__init__.py

# examplepackage/__init__.py

from .examplemodule import greet, add
__all__ = [
    'greet',
    'add',
]

????????在此示例中,該文件從文件__init__.py導(dǎo)入 greetadd函數(shù),并使它們成為包的公共接口的一部分。__all__該變量用于定義包的公共接口,并使其他開發(fā)人員更容易理解和使用examplemodule.py包。?????????????????????

????????通過此設(shè)置,您現(xiàn)在可以從 examplepackagegreet、???????add函數(shù)導(dǎo)入,如下所示:

import examplepackage
examplepackage.greet("John")
examplepackage.add(1, 2)

三、你如何在 Python 中管理包?

????????開發(fā)人員分發(fā)包的最常見方式是將它們上傳到稱為?Python 包索引 (PyPI)?的公共存儲(chǔ)庫。我們使用一個(gè)名為pip的系統(tǒng),它代表“Pip安裝包”。它是一個(gè)命令行工具,允許用戶從 PyPI 和其他包索引安裝和管理包。

????????如果您使用 ,則已通過 Python 包索引 (PyPI) 下載并安裝了包。pip install

????????像 pip 這樣的包管理系統(tǒng)可以輕松安裝、更新和刪除包,以及管理項(xiàng)目中的依賴項(xiàng)(其他包正常運(yùn)行所需的包)。

四、pip如何工作?

??pip install是我們用來從名為 PyPI 的庫甚至您自己的計(jì)算機(jī)下載和安裝不同包的命令。當(dāng)您運(yùn)行此命令時(shí),它將檢查該軟件包在 PyPI 上是否可用,如果是,它將下載并將其安裝在您的計(jì)算機(jī)上。此外,它將檢查 - 如果需要,安裝- 包元數(shù)據(jù)中列出的所有依賴項(xiàng)。最后,pip 將跟蹤您安裝的所有軟件包,以幫助您以后升級(jí)或卸載它們。

????????默認(rèn)情況下, pip install會(huì)安裝最新版本的軟件包,但如果需要,可以選擇使用pip install <PACKAGE>==<VERSION>pip install numpy==1.23.5 來安裝特定版本,例如,可以使用 。如果你的代碼出現(xiàn)問題并且需要使用特定版本的包,這會(huì)很有幫助。

????????你有沒有注意到,當(dāng)你用來向你的Python代碼添加一個(gè)功能時(shí),你用來安裝它的名稱與你導(dǎo)入它時(shí)使用的名稱不同?發(fā)生這種情況是因?yàn)橛袃煞N類型的名稱:pip install

  • 分發(fā)名稱,這是用于安裝 Pack 的名稱pip install
  • 名稱,這是在代碼中導(dǎo)入包時(shí)使用的名稱。

????????發(fā)行版名稱是唯一的,并且通過 PyPI(從中獲取包的庫)保證與其他包名稱不同。另一方面,包名稱由創(chuàng)建包的人選擇,因此它可能不是唯一的。

????????這就是為什么您可以使用 pip install安裝名為“dagster-dbt”的包,但使用名稱“dagster_dbt”將其導(dǎo)入代碼中。這也是為什么你可以使用 pip install來安裝一個(gè)名為“scikit-learn”的包,但使用名稱“sklearn”將其導(dǎo)入到你的代碼中。

五、什么是相對(duì)進(jìn)口與絕對(duì)進(jìn)口?

????????編寫包時(shí),有時(shí)我們可能希望從同一包中的另一個(gè)模塊導(dǎo)入代碼。我們需要在 Python 中導(dǎo)入模塊或包的兩種不同方式之間進(jìn)行選擇,相對(duì)導(dǎo)入絕對(duì)導(dǎo)入。

????????相對(duì)導(dǎo)入由顯式或隱式導(dǎo)入組成,但您實(shí)際上只需要了解顯式相對(duì)導(dǎo)入,因?yàn)?Python 3 不支持隱式相對(duì)導(dǎo)入。

????????相對(duì)導(dǎo)入使用前導(dǎo)點(diǎn)。單個(gè)前導(dǎo)點(diǎn)表示相對(duì)導(dǎo)入,從當(dāng)前包開始。兩個(gè)或多個(gè)前導(dǎo)點(diǎn)表示對(duì)當(dāng)前包的父級(jí)的相對(duì)導(dǎo)入,第一個(gè)點(diǎn)之后每個(gè)點(diǎn)一個(gè)級(jí)別。例如,給定以下包布局:

package/
    __init__.py
    subpackage1/
        __init__.py
        moduleX.py
        moduleY.py
    subpackage2/
        __init__.py
        moduleZ.py
    moduleA.py

????????對(duì)應(yīng)的相對(duì)導(dǎo)入是指:在 subpackage1/moduleX.py 或 subpackage1/__init__.py 中,以下是有效的相對(duì)導(dǎo)入:

from .moduleY import spam
from .moduleY import spam as ham
from . import moduleY
from ..subpackage1 import moduleY
from ..subpackage2.moduleZ import eggs
from ..moduleA import foo

????????相對(duì)導(dǎo)入允許您導(dǎo)入相對(duì)于當(dāng)前模塊的模塊。它們使用關(guān)鍵字“from”,后跟當(dāng)前包的名稱以及要導(dǎo)入的模塊或包的名稱。例如,如果有一個(gè)以兩個(gè)模塊命名的包,并且 可以使用相對(duì)導(dǎo)入將代碼從 pymodule1.py導(dǎo)入module2.py ,如下所示:

# examplepackage/module2.py

from .module1 import greeting
def greet(name):
    print(greeting + " " + name)

????????在這里,from .module1 import greeting相對(duì)導(dǎo)入用于將???????greeting變量從???????module1.py文件導(dǎo)入到???????module2.py文件中。???????.module1前面指示導(dǎo)入應(yīng)相對(duì)于當(dāng)前模塊。

????????絕對(duì)導(dǎo)入允許您使用模塊的全名導(dǎo)入模塊,而不管它們相對(duì)于當(dāng)前模塊的位置如何。它們使用要導(dǎo)入的模塊或包的完整路徑。例如,您可以使用絕對(duì)導(dǎo)入將greeting變量從module1.py文件轉(zhuǎn)移到module2.py文件中,如下所示:

# examplepackage/module2.py

from examplepackage.module1 import greeting
def greet(name):
    print(greeting + " " + name)

????????在這里,from examplepackage.module1 import greeting絕對(duì)導(dǎo)入用于將greeting變量從module1.py文件導(dǎo)入到module2.py文件中。模塊的全名 examplepackage.module1用于指定模塊的位置。?????????????????????

????????在 Python 3 中,相對(duì)導(dǎo)入必須是顯式的,絕對(duì)導(dǎo)入是默認(rèn)行為。文章來源地址http://www.zghlxwxcb.cn/news/detail-700489.html

到了這里,關(guān)于【Python 程序設(shè)計(jì)】包和數(shù)據(jù)人員入門【01/8】的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • Python 程序設(shè)計(jì)入門(023)—— Python 的自定義函數(shù)

    在 Python 中,函數(shù)的應(yīng)用非常廣泛。比如:input()、print()、str()、range()、len() 等,這些稱為 Python 的內(nèi)置函數(shù),可以直接使用。Python 支持自定義函數(shù),即將一段有規(guī)律的、可重復(fù)使用的代碼定義為函數(shù),達(dá)到一次編寫,多次使用的目的。 自定義函數(shù)使用 def 實(shí)現(xiàn),語法格

    2024年02月12日
    瀏覽(21)
  • 案例228:基于微信小程序的走失人員的報(bào)備平臺(tái)設(shè)計(jì)

    案例228:基于微信小程序的走失人員的報(bào)備平臺(tái)設(shè)計(jì)

    文末獲取源碼 開發(fā)語言:Java 框架:SSM JDK版本:JDK1.8 數(shù)據(jù)庫:mysql 5.7 開發(fā)軟件:eclipse/myeclipse/idea Maven包:Maven3.5.4 小程序框架:uniapp 小程序開發(fā)軟件:HBuilder X 小程序運(yùn)行軟件:微信開發(fā)者 目錄 目錄 前言 系統(tǒng)展示 管理員后臺(tái)功能實(shí)現(xiàn) 家屬管理 志愿者管理 公安部門管理

    2024年02月21日
    瀏覽(20)
  • Python 程序設(shè)計(jì)入門(018)—— format() 函數(shù)的用法詳解

    format() 函數(shù)可以對(duì)數(shù)據(jù)進(jìn)行格式化處理,將值轉(zhuǎn)換為由 format_spec 控制的【格式化】表示形式。format() 函數(shù)的語法格式如下: 說明: (1)value:要轉(zhuǎn)換的數(shù)據(jù)。 (2)format_spec:格式化解釋,取決于值參數(shù)的類型; (3)默認(rèn)情況下,format_spec 是一個(gè)空字符串,通常與調(diào)用 st

    2024年02月03日
    瀏覽(26)
  • 基于Java+Vue+uniapp微信小程序走失人員報(bào)備平臺(tái)設(shè)計(jì)和實(shí)現(xiàn)

    基于Java+Vue+uniapp微信小程序走失人員報(bào)備平臺(tái)設(shè)計(jì)和實(shí)現(xiàn)

    博主介紹 : ? 全網(wǎng)粉絲30W+,csdn特邀作者、博客專家、CSDN新星計(jì)劃導(dǎo)師、Java領(lǐng)域優(yōu)質(zhì)創(chuàng)作者,博客之星、掘金/華為云/阿里云/InfoQ等平臺(tái)優(yōu)質(zhì)作者、專注于Java技術(shù)領(lǐng)域和畢業(yè)項(xiàng)目實(shí)戰(zhàn) ? ?? 文末獲取源碼聯(lián)系 ?? ?????精彩專欄 推薦訂閱 ?????不然下次找不到喲 2022-2024年

    2024年02月04日
    瀏覽(95)
  • Python 程序設(shè)計(jì)入門(008)—— 列表的操作(3):列表推導(dǎo)式

    使用列表推導(dǎo)式可以快速生成一個(gè)列表?;蛘吒鶕?jù)某個(gè)列表生成滿足指定需求的列表。列表推導(dǎo)式包含在方括號(hào)內(nèi),它由一個(gè)表達(dá)式、一個(gè)或多個(gè) for 循環(huán)和一個(gè)用于過濾生成的列表的可選條件組成。 列表推導(dǎo)式的語法格式如下: 說明: (1)Expressinon:表達(dá)式,用于計(jì)算列

    2024年02月14日
    瀏覽(24)
  • Python 程序設(shè)計(jì)入門(025)—— 使用 os 模塊操作文件與目錄

    Python 內(nèi)置了 os 模塊及其子模塊 os.path,用于對(duì)目錄或文件進(jìn)行操作。在使用 os 模塊及其子模塊 os.path 模塊時(shí),需要使用 import 導(dǎo)入該模塊,才能使用它們提供的函數(shù)或方法。 1、os 模塊提供的操作目錄的函數(shù) os 模塊提供的操作目錄的函數(shù)如下表所示: 函數(shù) 說明 getcwd() 返回當(dāng)

    2024年02月11日
    瀏覽(86)
  • Java程序設(shè)計(jì)入門教程--控制臺(tái)輸入數(shù)據(jù)

    控制臺(tái)輸入數(shù)據(jù)常用類 Scanner類 ?????? 在 很多情況下,我們需要 Java 程序能夠?qū)ξ覀冎付ǖ闹颠M(jìn)行計(jì)算,這樣的話就需要我們的 Java 程序能夠讀取我們所輸入的值。我們可以使用 Java 自帶的 Scanner 類來從控制臺(tái)獲取 輸入 。 ?????? Scanner 類在包 java.util 里。我們一般在程

    2024年02月07日
    瀏覽(34)
  • Python數(shù)據(jù)處理爬蟲程序設(shè)計(jì)(人民網(wǎng)新聞)

    Python數(shù)據(jù)處理爬蟲程序設(shè)計(jì)(人民網(wǎng)新聞)

    目錄 目錄… 錯(cuò)誤!未定義書簽。 正文 4 1緒論 4 2相關(guān)技術(shù)介紹 4 2.1網(wǎng)絡(luò)爬蟲技術(shù) 4 2.1.1網(wǎng)絡(luò)爬蟲技術(shù)概述 4 2.1.2python 的網(wǎng)絡(luò)請(qǐng)求 4 2.1.3如何解決網(wǎng)頁的反爬問題 5 3設(shè)計(jì)目的與要求 5 3.1 程序設(shè)計(jì)的目的與要求 5 4總體設(shè)計(jì) 5 4.1 程序目錄結(jié)構(gòu)設(shè)計(jì) 5 5詳細(xì)設(shè)計(jì) 6 5.1分析目標(biāo)網(wǎng)站

    2024年02月08日
    瀏覽(12)
  • 同濟(jì)大學(xué)Python程序設(shè)計(jì)基礎(chǔ) 實(shí)驗(yàn)九:數(shù)據(jù)可視化

    1.創(chuàng)建一個(gè)2行1列的繪圖區(qū)并在第1行第1列繪制函數(shù)f(x)=x2 的曲線圖(x的取值范圍[-1,1]),在第2行第1列繪制函數(shù)f(x)=1/x的曲線圖(x的取值范圍[0,1]),效果如圖2.9.1所示。 2.調(diào)用scatter函數(shù)繪制正弦函數(shù)的曲線,請(qǐng)?jiān)谇€中添加一個(gè)表示XY的軸線,并在X軸方向輸出刻度標(biāo)記文本,

    2024年02月16日
    瀏覽(27)
  • C++ 程序設(shè)計(jì)入門

    C++ 程序設(shè)計(jì)入門

    ?作者簡(jiǎn)介:人工智能專業(yè)本科在讀,喜歡計(jì)算機(jī)與編程,寫博客記錄自己的學(xué)習(xí)歷程。 ??個(gè)人主頁:小嗷犬的個(gè)人主頁 ??個(gè)人網(wǎng)站:小嗷犬的技術(shù)小站 ??個(gè)人信條:為天地立心,為生民立命,為往圣繼絕學(xué),為萬世開太平。 程序是算法與數(shù)據(jù)結(jié)構(gòu)的載體,是計(jì)算機(jī)用以

    2024年02月11日
    瀏覽(26)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包