日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

Python基础知识(第十一天)

發(fā)布時間:2025/3/21 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Python基础知识(第十一天) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

154.模塊化編程理念_什么是模塊_哲學思想

模塊和包概念

1.Python?程序由模塊組成。一個模塊對應 python?源文件,一般后綴名是:.py。

2.模塊由語句組成。運行 Python?程序時,按照模塊中語句的順序依次執(zhí)行。

3.語句是 Python?程序的構造單元,用于創(chuàng)建對象、變量賦值、調用函數(shù)、控制語句等。

庫模(standard library)

與函數(shù)類似,模塊也分為標準庫模塊和用戶自定義模塊。

Python?標準庫提供了操作系統(tǒng)功能、網(wǎng)絡通信、文本處理、文件處理、數(shù)學運算等基本的功能。比如:random(隨機數(shù))、math(數(shù)學運算)、time(時間處理)、file(文件處理)、os(和操作系統(tǒng)交互)、sys(和解釋器交互)等。另外,Python?還提供了海量的第三方模塊,使用方式和標準庫類似。功能覆蓋了我們能想象到的所有領域,比如:科學計算、WEB?開發(fā)、大數(shù)據(jù)、人工智能、圖形系統(tǒng)等。

為什么需要模塊化編程

模塊(module)對應于Python 源代碼文件(.py 文件)。模塊中可以定義變量、函數(shù)、類、普通語句。 這樣,我們可以將一個 Python 程序分解成多個模塊,便于后期的重復應用。

模塊化編程(Modular Programming)將一個任務分解成多個模塊。每個模塊就像一個積木一樣,便于后期的反復使用、反復搭建。

155.模塊化編程的流程_設計和實現(xiàn)分離

模塊化編程的一般流程:

1.設計API,進行功能描述。? ?

2.編碼實現(xiàn)API?中描述的功能。

3.在模塊中編寫測試代碼,并消除全局代碼。? ?

4.使用私有函數(shù)實現(xiàn)不被外部客戶端調用的模塊函數(shù)。

API(Application Programming Interface 應用程序編程接口)是用于描述模塊中提供的函數(shù)和類的功能描述和使用方式描述。模塊化編程中,首先設計的就是模塊的 API(即要實現(xiàn)的功能描述),然后開始編碼實現(xiàn)API 中描述的功能。最后,在其他模塊中導入本模塊進行調用。我們可以通過help(模塊名)查看模塊的API。一般使用時先導入模塊然后通過help函數(shù)查看。

設計計算薪水模塊的 API

""" 本模塊用于計算公司員工的薪資""" company = "Alimama"def yearSalary(monthSalary): """根據(jù)傳入的月薪,計算出年薪""" passdef daySalary(monthSalary): """根據(jù)傳入的月薪,計算出每天的薪資""" pass import Salary print(Salary.__doc__) print(Salary.yearSalary.__doc__)

每個模塊都有一個名稱,通過特殊變量__name__可以獲取模塊的名稱。在正常情況下,模塊名字對應源文件名。 僅有一個例外,就是當一個模塊被作為程序入口時(主程序、交互式提示符下),它的__name__的值為“???main???”。我們可以根據(jù)這個特點,將模塊源代碼文件中的測試代碼進行獨立的處理。例如:

if __name__=="__main__":print(yearSalary(3000))print(daySalary(3000))

156.模塊導入_import和from_import語句詳解和區(qū)別

模塊導入

模塊化設計的好處之一就是“代碼復用性高”。寫好的模塊可以被反復調用,重復使用。 ???模塊的導入就是“在本模塊中使用其他模塊”。

import?語句導入

import 語句的基本語法格式如下:

import 模塊名? ? ? ? ? ? #導入一個模塊

import 模塊?1,模塊?2…? ? ? ? ?#導入多個模塊

import 模塊名 as?模塊別名? ? ? ? ? ?#導入模塊并使用新名字

import 加載的模塊分為四個通用類別

1.使用 python?編寫的代碼(.py?文件);

2.已被編譯為共享庫或 DLL?的 C?或 C++擴展;

3.c.包好一組模塊的包

4.使用 C 編寫并鏈接到 python 解釋器的內置模塊;

from…import?導入

Python?中可以使用from…import?導入模塊中的成員。基本語法格式如下:

from 模塊名 import 成員?1,成員?2,…

如果希望導入一個模塊中的所有成員,則可以采用如下方式:

from 模塊名 import *

import 導入的是模塊 , from...import 導入的是模塊中的一個函數(shù)/一個類。

import math print(math.sin(30))from math import sin print(sin(30))

157.import加載底層原理_importlib模塊

????import? ???()動態(tài)導入

import importlib a = importlib.import_module("math") print(a.pi)

模塊的加載問題

一個模塊無論導入多少次,這個模塊在整個解釋器進程內有且僅有一個實例對象。

有時候我們確實需要重新加載一個模塊,這時候可以使用:

import test02 import test02print("####") import importlib importlib.reload(test02)

158.包的概念和創(chuàng)建包和導入包

包(package)的概念和結構

當一個項目中有很多個模塊時,需要再進行組織。我們將功能類似的模塊放到一起, 形成了“包”。本質上,“包”就是一個必須有?init?.py?的文件夾。典型結構如下:

包下面可以包含“模塊(module)”,也可以再包含“子包(subpackage)”。就像文件夾下面可以有文件,也可以有子文件夾一樣。

pycharm中創(chuàng)建包

在 pycharm?開發(fā)環(huán)境中創(chuàng)建包,非常簡單。在要創(chuàng)建包的地方單擊右鍵:New-->Python package?即可。pycharm?會自動幫助我們生成帶有? ??init? ??.py?文件的包。

???????導入包操作

上一節(jié)中的包結構,我們需要導入 module_AA.py。方式如下:

1.import a.aa.module_AA

在使用時,必須加完整名稱來引用,比如:a.aa.module_AA.fun_AA()

2.from a.aa import?module_AA

在使用時,直接可以使用模塊名。 比如:module_AA.fun_AA()

3.from a.aa.module_AA?import?fun_AA

直接導入函數(shù)在使用時,直接可以使用函數(shù)名。 比如:fun_AA()

159.包的本質和init文件_批量導入_包內引用

包的本質

導入包的本質其實是“導入了包的? ??init? ??.py”文件。也就是說,”import??pack1”意味著執(zhí)行了包 pack1?下面的? ??init? ??.py?文件。 這樣,可以在? ??init? ??.py?中批量導入我們需要的模塊,而不再需要一個個導入。

? ??init? ??.py 的三個核心作用:

1.作為包的標識,不能刪除。

2.用來實現(xiàn)模糊導入

3.導入包實質是執(zhí)行? ??init? ??.py 文件,可以在? ??init? ???.py 文件中做這個包的初始化、以及需要統(tǒng)一執(zhí)行代碼、批量導入。

???????用*導入包

import * 這樣的語句理論上是希望文件系統(tǒng)找出包中所有的子模塊,然后導入它們。這可能會花長時間等。Python 解決方案是提供一個明確的包索引。

這個索引由 ? ??init? ??.py 定義? ??all? ??變量,該變量為一列表,如上例?a?包下的????init? ??.py 中 ,可 定 義? ??all? ??= ["module_A","module_A2"]

這意味著,?from?sound.effects import?* 會從對應的包中導入以上兩個子模塊;

【注】盡管提供 import * 的方法,仍不建議在生產(chǎn)代碼中使用這種寫法。

???????包內引用

如果是子包內的引用,可以按相對位置引入子模塊 以 aa 包下的module_AA 中導入a 包下內容為例:

from ..?import?module_A? ? ? ? ? ? ?#..表示上級目錄 .表示同級目錄

from .?import?module_A2? ? ? ? ? ? #.表示同級目錄

?

160.sys.path和模塊搜索路徑詳解

當我們導入某個模塊文件時, Python?解釋器去哪里找這個文件呢?只有找到這個文件才能讀取、裝載運行該模塊文件。它一般按照如下路徑尋找模塊文件(按照順序尋找,找到即停不繼續(xù)往下尋找):

1.內置模塊

2.當前目錄

3.程序的主目錄

4.pythonpath目錄(如果已經(jīng)設置了 pythonpath?環(huán)境變量)

5.標準鏈接庫目錄

6.第三方庫目錄(site-packages?目錄)

7.pth?文件的內容(如果存在的話)

8.sys.path.append()臨時添加的目錄

161.模塊的本地發(fā)布_模塊的安裝

???????模塊的本地發(fā)布

當我們完成了某個模塊開發(fā)后,可以將他對外發(fā)布,其他開發(fā)者也可以以“第三方擴展庫”的方式使用我們的模塊。我們按照如下步驟即可實現(xiàn)模塊的發(fā)布:

1.為模塊文件創(chuàng)建如下結構的文件夾(一般,文件夾的名字和模塊的名字一樣):

2.在文件夾中創(chuàng)建一個名為『setup.py』的文件,內容如下:

from distutils.core import setup setup(name='baizhanMath2', # 對 外 我 們 模 塊 的 名 字version='1.0', #版本號description='這是第一個對外發(fā)布的模塊,測試哦', #描述author='gaoqi', 作者author_email='gaoqi110@163.com',py_modules=['baizhanMath2.demo1','baizhanMath2.demo2'] #要發(fā)布的模塊 )

???????3.構建一個發(fā)布文件。通過終端,cd?到模塊文件夾 c?下面,再鍵入命令:

python?setup.py?sdist ?

???????本地安裝模塊

將發(fā)布安裝到你的本地計算機上。仍在 cmd 命令行模式下操作,進 setup.py 所在目錄,鍵入命令:

python setup.py install

安裝成功后,我們進入 python?目錄/Lib/site-packages?目錄(第三方模塊都安裝的這里,python?解釋器執(zhí)行時也會搜索這個路徑

安裝成功后,直接使用 import?導入即可。

import baizhanMath2.demo1???????

總結

以上是生活随笔為你收集整理的Python基础知识(第十一天)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內容還不錯,歡迎將生活随笔推薦給好友。