欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

Python中關(guān)于使用模塊的基礎(chǔ)知識

系統(tǒng) 1907 0

?一個模塊可以在邏輯上組織Python代碼。將相關(guān)的代碼到一個模塊中,使代碼更容易理解和使用。模塊是可以綁定和借鑒任意命名屬性的Python對象。

簡單地說,一個模塊是由Python代碼的文件。一個模塊可以定義函數(shù),類和變量。模塊還可以包括可運行的代碼。
例子:

Python代碼的模塊名為aname通常位于一個名為aname.py。下面是一個簡單的模塊,support.py作為例子

            
def print_func( par ):
  print "Hello : ", par
  return


          

import語句:

可以通過在其他一些Python源文件執(zhí)行import語句來使用任何Python源文件作為一個模塊。import的語法如下:

            
import module1[, module2[,... moduleN]


          

當(dāng)解釋器遇到import語句,它導(dǎo)入(import)模塊如果模塊出現(xiàn)在搜索路徑。搜索路徑是一個目錄列表,該解釋器導(dǎo)入模塊之前搜索。例如,導(dǎo)入模塊hello.py,需要把下面的命令在腳本的頂部:

            
#!/usr/bin/python

# Import module support
import support

# Now you can call defined function that module as follows
support.print_func("Zara")


          

當(dāng)執(zhí)行上面的代碼,產(chǎn)生以下結(jié)果:

            
Hello : Zara


          

一個模塊被加載一次,不管導(dǎo)入的次數(shù)。這可防止模塊執(zhí)行發(fā)生多次導(dǎo)入。
?from...import 語句

Python的from語句可以從一個模塊中導(dǎo)入特定的屬性到當(dāng)前的命名空間。from...import 語法如下:

            
from modname import name1[, name2[, ... nameN]]


          

例如,從模塊fib導(dǎo)入函數(shù)fibonacci,使用下面的語句:

            
from fib import fibonacci


          

此語句不導(dǎo)入整個模塊fib到當(dāng)前的命名空間;它只是介紹了fibonacci從模塊fib導(dǎo)入模塊的全局符號表列。
from...import * 語句:

它也可以通過使用下面的import語句導(dǎo)入從模塊到當(dāng)前的命名空間的所有名稱:

            
from modname import *


          

這提供了導(dǎo)入從模塊到當(dāng)前的命名空間中的所有項目一個簡單的方法;不過,這個語句應(yīng)謹(jǐn)慎使用。
定位模塊:

當(dāng)導(dǎo)入一個模塊,在下列序列模塊由Python解釋器搜索:

  • ??? 當(dāng)前目錄
  • ??? 如果未找到該模塊,然后Python搜索在shell變量PYTHONPATH每個目錄
  • ??? 如果這些方法都失敗,Python會檢查默認(rèn)路徑。在UNIX上,默認(rèn)路徑是正常是/usr/local/lib/python/

模塊搜索路徑被存儲在系統(tǒng)模塊sys作為所述的sys.path變量。在sys.path的變量包含當(dāng)前目錄,PYTHONPATH和相關(guān)的默認(rèn)安裝。
PYTHONPATH變量:

在PYTHONPATH是一個環(huán)境變量,包括目錄列表中。 PYTHONPATH的語法shell變量PATH相同。

下面是Windows系統(tǒng)的典型PYTHONPATH:

            
set PYTHONPATH=c:\python20\lib;


          

這里是UNIX系統(tǒng)的典型PYTHONPATH:

            
set PYTHONPATH=/usr/local/lib/python


          

命名空間和作用域:

變量名稱(標(biāo)識)映射到對象。名稱空間是變量名(鍵)及其相應(yīng)的對象(的值)的字典。

Python語句可以在本地命名空間和全局命名空間訪問變量。如果局部和全局變量同名,局部變量屏蔽全局變量。

每個函數(shù)都有自己的命名空間。類方法遵循相同的作用域規(guī)則為普通函數(shù)。

Python對變量是否為局部或全局進(jìn)行假定猜測。它假定任何變量賦值函數(shù)中的值是局部的。

因此為了使一個函數(shù)內(nèi)的值賦給一個全局變量,必須先使用global語句。

聲明 global VarName 告訴Python VarName是一個全局變量。Python 停止尋找該變量的局部命名空間。

例如,我們在全局命名空間中定義的變量Money 。在該函數(shù)的Money ,我們給定Money 的值,因此Python 假定Money 為局部變量。但是,我們設(shè)定它,所以一個UnboundLocalError是結(jié)果之前訪問的局部變量Money 的值。取消global語句解決了這個問題。

            
#!/usr/bin/python

Money = 2000
def AddMoney():
  # Uncomment the following line to fix the code:
  # global Money
  Money = Money + 1

print Money
AddMoney()
print Money


          

dir( ) 函數(shù):

使用dir()內(nèi)置函數(shù)返回一個包含一個模塊中定義名稱的字符串的排序列表。

該列表包含在一個模塊中定義的所有模塊,變量和函數(shù)的名稱。下面是一個簡單的例子:

            
#!/usr/bin/python

# Import built-in module math
import math

content = dir(math)

print content;

當(dāng)執(zhí)行上面的代碼,產(chǎn)生以下結(jié)果:

['__doc__', '__file__', '__name__', 'acos', 'asin', 'atan', 
'atan2', 'ceil', 'cos', 'cosh', 'degrees', 'e', 'exp', 
'fabs', 'floor', 'fmod', 'frexp', 'hypot', 'ldexp', 'log',
'log10', 'modf', 'pi', 'pow', 'radians', 'sin', 'sinh', 
'sqrt', 'tan', 'tanh']


          

在這里,特殊字符串變量__name__是模塊的名稱,__file__是從中加載的模塊的文件名。
globals()和 locals()函數(shù):

globals() 和 locals() 函數(shù)可用于返回在根據(jù)在它們被稱為位置的全局和局部名稱空間的名稱。

如果locals()被一個函數(shù)中調(diào)用時,它會返回所有可以在局部從函數(shù)訪問的名稱。

如果globals()從一個函數(shù)中調(diào)用時,它會返回所有可以從全局函數(shù)進(jìn)行訪問的名稱。

這兩個函數(shù)的返回類型是字典。因此,名稱可以使用keys()函數(shù)提取出來。
reload()函數(shù):

當(dāng)該模塊被導(dǎo)入到一個腳本,在一個模塊的頂層部分的代碼只執(zhí)行一次。

因此,如果你想重新執(zhí)行的頂級代碼模塊中,可以使用reload()函數(shù)。reload()函數(shù)導(dǎo)入先前導(dǎo)入的模塊了。reload()函數(shù)的語法是這樣的:

            
reload(module_name)


          

在這里,module_name是要重裝,不包含模塊名字符串的模塊的名稱。例如,要重新加載hello模塊,請執(zhí)行以下操作:

            
reload(hello)


          

Python中的包:

包是用于定義由模塊和子包和子子包等的單一的Python應(yīng)用環(huán)境的分層文件目錄結(jié)構(gòu)。

考慮一個文件Pots.py在Phone目錄中可用。此文件的源代碼如下一行:

            
#!/usr/bin/python

def Pots():
  print "I'm Pots Phone"


          

類似的方法,我們具有不同功能的另兩個文件具有相同的名稱如上:

  • ??? Phone/Isdn.py文件有函數(shù) Isdn()
  • ??? Phone/G3.py 文件有函數(shù) G3()

現(xiàn)在,創(chuàng)建在Phone目錄中多了一個文件__init__.py:

??

            
 Phone/__init__.py

          

?為了讓所有的功能可用,當(dāng)導(dǎo)入Phone,需要把__init__.py明確的import語句如下:

            
from Pots import Pots
from Isdn import Isdn
from G3 import G3


          

當(dāng)添加完這些行到__init__.py,那么已經(jīng)導(dǎo)入了Phone包所有這些類的使用。

            
#!/usr/bin/python

# Now import your Phone Package.
import Phone

Phone.Pots()
Phone.Isdn()
Phone.G3()


          

當(dāng)執(zhí)行上面的代碼,產(chǎn)生以下結(jié)果:

            
I'm Pots Phone
I'm 3G Phone
I'm ISDN Phone


          

在上面的例子我們采取示例每個文件單個函數(shù),但可以保留文件中多個函數(shù)。還可以在這些文件定義不同的Python類,可以在包外創(chuàng)建那些類。


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發(fā)表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 一二区视频 | 欧美色性 | 99re6热视频精品免费观看 | 日韩欧美一区二区视频 | 超碰97青青草 | 亚洲影视在线观看 | 人人爱天天做夜夜爽88 | 中文字幕久久精品 | 久久高清 | 91网视频在线观看 | 成人国产精品免费视频 | 免费色视频 | 国产视频网站在线观看 | 91看片官网 | 欧美日韩中文字幕一区二区高清 | 成人免费大片a毛片 | 日韩一区精品视频 | 欧美成人性视频播放 | 亚洲欧美在线视频 | 国产一级大片在线观看 | 亚洲一区二区三区在线免费观看 | 亚洲视频在线观看地址 | 欧美影院在线 | 亚洲精品美女久久久 | 天天拍夜夜爽 | 欧美国产伦久久久久 | 91p在线 | 精品中文字幕一区二区 | 国产激情91久久精品导航 | 男女猛烈视频 | 在线看一级片 | 久久精品夜夜夜夜夜久久 | 邪不压正免费观看完整高清视频 | 亚洲人成网站999久久久综合 | 伦一区二区三区中文字幕v亚洲 | 欧美日韩中 | 亚洲最大成人综合 | 一区二区中文字幕 | 欧美精品免费在线 | 乱子伦xxxxvideos | 欧美日韩国产一区二区三区播放 |