日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) >

【Python】function、module、Package及import导入方法

發(fā)布時(shí)間:2025/3/15 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【Python】function、module、Package及import导入方法 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

計(jì)算機(jī)程序開(kāi)發(fā)中,隨著程序代碼越寫(xiě)越多,在一個(gè)文件里代碼就會(huì)越來(lái)越長(zhǎng),越來(lái)越不容易維護(hù)。

為了編寫(xiě)可維護(hù)的代碼,我們把很多函數(shù)分組,分別放到不同的文件里面,這樣,這個(gè)文件包含的代碼就相對(duì)較少,很多編程語(yǔ)言都采用這種組織代碼的方式,下面介紹一下Python中的一些基本概念:

基本概念

函數(shù)function
將一組代碼組織到一起,實(shí)現(xiàn)某種功能

模塊module
為實(shí)現(xiàn)某種邏輯將相關(guān)連的函數(shù)寫(xiě)在同一個(gè)文件里,使邏輯更清楚,這就是一個(gè)模塊
在python中文件以.py 結(jié)尾,那這個(gè).py文件就可以稱之為模塊,說(shuō)白了,就是Python文件

庫(kù)文件library
library,中文翻譯為:庫(kù),也常稱為:庫(kù)文件
之所以此處不說(shuō)是Python中的library,那是因?yàn)?#xff0c;本身library這個(gè)詞,一般都是針對(duì)其他的編譯型語(yǔ)言,比如C,C#等語(yǔ)言來(lái)說(shuō)的。常見(jiàn)的C/C#等語(yǔ)言中的library,一般指的就是:
靜態(tài)的庫(kù)文件:xxx.a
動(dòng)態(tài)的庫(kù)文件:xxx.dll

Python中module和library之間的區(qū)別
對(duì)于library和module,說(shuō)白了,都是提供了一定的功能供別人調(diào)用。
從這方面來(lái)說(shuō),也可以理解為:Python中l(wèi)ibrary等價(jià)于module;
只不過(guò),Python中,很少說(shuō)library,正常的話,都是說(shuō)module;

包Package
為了方便管理模塊,python 中引入了包的概念
包是由關(guān)聯(lián)的多個(gè)模塊組成的目錄,在每一個(gè)包下而都有一個(gè)__init__.py文件,這個(gè)文件必須存在
否則,Python就把這個(gè)目錄當(dāng)成普通目錄,而不是一個(gè)包
init.py 可以是空文件,也可是有python代碼,因?yàn)開(kāi)_init__.py本身就是一個(gè)模塊

?

?

import 導(dǎo)入

使用import 關(guān)鍵字,可以將一個(gè)包中已出現(xiàn)的一個(gè)或多個(gè)函數(shù)或模塊,引入到另一個(gè)python代碼中,從而實(shí)現(xiàn)代碼的復(fù)用

注意
1、如果是本地導(dǎo)入文件,直接使用:import filename
2、如果導(dǎo)入的是一個(gè)包,該包下面必須是有__init__.py文件才可以導(dǎo)入,否則報(bào)錯(cuò),有了__init__.py文件,python解析器才會(huì)把這個(gè)目錄當(dāng)成是的包

使用module有什么好處呢?
最大的好處是大大提高了代碼的可維護(hù)性。其次,編寫(xiě)代碼不必從零開(kāi)始。當(dāng)一個(gè)模塊編寫(xiě)完畢,就可以被其他地方引用。我們?cè)诰帉?xiě)程序的時(shí)候,也經(jīng)常引用其他模塊,包括Python內(nèi)置的模塊和來(lái)自第三方的模塊。

?

?

?

使用模塊還可以避免函數(shù)名和變量名沖突。相同名字的函數(shù)和變量完全可以分別存在不同的模塊中,因此,我們自己在編寫(xiě)模塊時(shí),不必考慮名字會(huì)與其他模塊沖突。但是也要注意,盡量不要與內(nèi)置函數(shù)的名字沖突。

導(dǎo)入內(nèi)置模塊一般是這樣的:

?

?

import os

如果不同的人編寫(xiě)的模塊名相同怎么辦?為了避免模塊沖突,Python可以按Package來(lái)導(dǎo)入模塊。
我們以我們經(jīng)常用到的selenium包為例來(lái)講一下import的三種方法:

?

我們先看一下selenium包的目錄結(jié)構(gòu),如下圖

?

selenium包的路徑是在\Python 3.6.1\Lib\site-packages\selenium,一般第三方package都是在\Lib\site-packages\下

第一種導(dǎo)入模塊方法:import modelName

import webdriver driver = webdriver.Chrome() #定義一個(gè)driver變量

這個(gè)時(shí)候我們發(fā)現(xiàn)報(bào)錯(cuò),是因?yàn)閟elenium包下面有多個(gè)packages,有多個(gè)webdriver.py文件,這時(shí)我們可以通過(guò)具體包去導(dǎo)入

import selenium.webdriver driver = selenium.webdriver.Chrome() #定義一個(gè)driver變量

去selenium包目錄下你會(huì)發(fā)現(xiàn)我們找不到webdriver.py文件,其實(shí)我們是導(dǎo)入了selenium包下面的webdriver包中的__init__.py文件,如圖所示:

你可以看到這個(gè)文件里包含了各種瀏覽器的webdriver,在需要具體瀏覽器時(shí),我們就可以自動(dòng)定義webdriver,定義變量時(shí)需要用selenium.webdriver,因?yàn)槲覀儗?dǎo)包時(shí)就是導(dǎo)入selenium.webdriver,你會(huì)發(fā)現(xiàn)這樣有點(diǎn)麻煩。

這時(shí)我們可以使用第二種導(dǎo)入模塊的方法:from package import modelName

from selenium import webdriver driver = webdriver.Chrome() #定義一個(gè)driver變量

其實(shí)這種方法還可以導(dǎo)入模塊里面具體的函數(shù):from modelName import functionName

第三種導(dǎo)入模塊方式:import modelName as xx

import selenium.webdriver as sample driver = sample.Chrome() #定義一個(gè)driver變量

這個(gè)其實(shí)相當(dāng)于將selenium.webdriver重命名,為了定義時(shí)方便

我們可以總結(jié)一下:
1.如果導(dǎo)入內(nèi)置模塊,一般是import modelName
2.如果需要導(dǎo)入包里面的所有模塊,直接可以import packageName
3.如果需要導(dǎo)入具體包里面的模塊或者模塊里面的具體函數(shù),使用from xx import yy
4.如果需要對(duì)導(dǎo)入的模塊進(jìn)行簡(jiǎn)單重命名,可以使用import modelName as xx

總結(jié)

以上是生活随笔為你收集整理的【Python】function、module、Package及import导入方法的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

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