如何用Python引用一些其他的函數(shù)?
一、前言
Python中的模塊,有過C語言編程經(jīng)驗(yàn)的朋友都知道在C語言中如果要引用sqrt函數(shù),必須用語句#include引入math.h這個(gè)頭文件,否則是無法正常進(jìn)行調(diào)用的。
那么在Python中,如果要引用一些其他的函數(shù),該怎么處理呢?
在Python中有一個(gè)概念叫做模塊(module),這個(gè)和C語言中的頭文件以及Java中的包很類似,比如在Python中要調(diào)用sqrt函數(shù),必須用import關(guān)鍵字引入math這個(gè)模塊,下面就來了解一下Python中的模塊。
說的通俗點(diǎn) :模塊就好比是工具包,要想使用這個(gè)工具包中的工具(就好比函數(shù)),就需要導(dǎo)入這個(gè)模塊。
二、模塊引入
1. import
在Python中用關(guān)鍵字import來引入某個(gè)模塊,比如要引用模塊math,就可以在文件最開始的地方用import math來引入。
形如 :
import module1,mudule2...
當(dāng)解釋器遇到import語句,如果模塊在當(dāng)前的搜索路徑就會被導(dǎo)入。
在調(diào)用math模塊中的函數(shù)時(shí),必須這樣引用:
模塊名.函數(shù)名為什么必須加上模塊名調(diào)用呢?
因?yàn)榭赡艽嬖谶@樣一種情況:在多個(gè)模塊中含有相同名稱的函數(shù),此時(shí)如果只是通過函數(shù)名來調(diào)用,解釋器無法知道到底要調(diào)用哪個(gè)函數(shù)。所以如果像上述這樣引入模塊的時(shí)候,調(diào)用函數(shù)必須加上模塊名。
import math
#這樣會報(bào)錯(cuò) print sqrt(2)
#這樣才能正確輸出結(jié)果 print math.sqrt(2)
有時(shí)候我們只需要用到模塊中的某個(gè)函數(shù),只需要引入該函數(shù)即可,此時(shí)可以用下面方法實(shí)現(xiàn):
from 模塊名 import 函數(shù)名1,函數(shù)名2....
不僅可以引入函數(shù),還可以引入一些全局變量、類等。
注意:
這種方式引入的時(shí)候,調(diào)用函數(shù)時(shí)只能給出函數(shù)名,不能給出模塊名,但是當(dāng)兩個(gè)模塊中含有相同名稱函數(shù)的時(shí)候,后面一次引入會覆蓋前一次引入。也就是說假如模塊A中有函數(shù)function( ),在模塊B中也有函數(shù)function( ),如果引入A中的function在先、B中的function在后,那么當(dāng)調(diào)用function函數(shù)的時(shí)候,是去執(zhí)行模塊B中的function函數(shù)。
2. 如果想一次性引入math中所有的東西,還可以通過from math import 來實(shí)現(xiàn)
2. from…import
Python的from語句讓你從模塊中導(dǎo)入一個(gè)指定的部分到當(dāng)前命名空間中。
語法如下:
from modname import name1[, name2[, ... nameN]]
例如,要導(dǎo)入模塊fib的fibonacci函數(shù),使用如下語句:
from fib import fibonacci注意:
不會把整個(gè)fib模塊導(dǎo)入到當(dāng)前的命名空間中,它只會將fib里的fibonacci單個(gè)引入。
3. from … import *
把一個(gè)模塊的所有內(nèi)容全都導(dǎo)入到當(dāng)前的命名空間也是可行的,只需使用如下聲明:
from modname import *注意:
這提供了一個(gè)簡單的方法來導(dǎo)入一個(gè)模塊中的所有項(xiàng)目。然而這種聲明不該被過多地使用。
4 . 定位模塊
當(dāng)你導(dǎo)入一個(gè)模塊,Python解析器對模塊位置的搜索順序是:
當(dāng)前目錄
如果不在當(dāng)前目錄,Python則搜索在shell變量PYTHONPATH下的每個(gè)目錄。
如果都找不到,Python會察看默認(rèn)路徑。UNIX下,默認(rèn)路徑一般為/usr/local/lib/python/
模塊搜索路徑存儲在system模塊的sys.path變量中。變量里包含當(dāng)前目錄,PYTHONPATH和由安裝過程決定的默認(rèn)目錄。

發(fā)表評論
請輸入評論內(nèi)容...
請輸入評論/評論長度6~500個(gè)字
最新活動(dòng)更多
-
10月23日火熱報(bào)名中>> 2025是德科技創(chuàng)新技術(shù)峰會
-
10月23日立即報(bào)名>> Works With 開發(fā)者大會深圳站
-
10月24日立即參評>> 【評選】維科杯·OFweek 2025(第十屆)物聯(lián)網(wǎng)行業(yè)年度評選
-
即日-11.25立即下載>>> 費(fèi)斯托白皮書《柔性:汽車生產(chǎn)未來的關(guān)鍵》
-
11月27日立即報(bào)名>> 【工程師系列】汽車電子技術(shù)在線大會
-
12月18日立即報(bào)名>> 【線下會議】OFweek 2025(第十屆)物聯(lián)網(wǎng)產(chǎn)業(yè)大會
推薦專題
-
10 大模型的盡頭是開源
- 1 特斯拉工人被故障機(jī)器人打成重傷,索賠3.6億
- 2 【行業(yè)深度研究】退居幕后四年后,張一鳴終于把算法公司變成AI公司?
- 3 AI 時(shí)代,阿里云想當(dāng)“安卓” ,那誰是“蘋果”?
- 4 華為公布昇騰芯片三年計(jì)劃,自研HBM曝光
- 5 硬剛英偉達(dá)!華為發(fā)布全球最強(qiáng)算力超節(jié)點(diǎn)和集群
- 6 機(jī)器人9月大事件|3家國產(chǎn)機(jī)器人沖刺IPO,行業(yè)交付與融資再創(chuàng)新高!
- 7 谷歌“香蕉”爆火啟示:國產(chǎn)垂類AI的危機(jī)還是轉(zhuǎn)機(jī)?
- 8 00后華裔女生靠兩部AI電影狂賺7.8億人民幣,AI正式進(jìn)軍好萊塢
- 9 美光:AI Capex瘋投不止,終于要拉起存儲超級周期了?
- 10 華為已殺入!AI領(lǐng)域最熱黃金賽道,大廠的數(shù)字人美女讓我一夜沒睡著覺