欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python中關于使用模塊的基礎知識

 更新時間:2015年05月24日 11:54:58   投稿:goldensun  
這篇文章主要介紹了Python中關于使用模塊的基礎知識,是Python入門的基礎,需要的朋友可以參考下

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

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

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

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

import語句:

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

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

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

#!/usr/bin/python

# Import module support
import support

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

當執(zhí)行上面的代碼,產生以下結果:

Hello : Zara

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

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

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

例如,從模塊fib導入函數fibonacci,使用下面的語句:

from fib import fibonacci

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

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

from modname import *

這提供了導入從模塊到當前的命名空間中的所有項目一個簡單的方法;不過,這個語句應謹慎使用。
定位模塊:

當導入一個模塊,在下列序列模塊由Python解釋器搜索:

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

模塊搜索路徑被存儲在系統(tǒng)模塊sys作為所述的sys.path變量。在sys.path的變量包含當前目錄,PYTHONPATH和相關的默認安裝。
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

命名空間和作用域:

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

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

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

Python對變量是否為局部或全局進行假定猜測。它假定任何變量賦值函數中的值是局部的。

因此為了使一個函數內的值賦給一個全局變量,必須先使用global語句。

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

例如,我們在全局命名空間中定義的變量Money 。在該函數的Money ,我們給定Money 的值,因此Python 假定Money 為局部變量。但是,我們設定它,所以一個UnboundLocalError是結果之前訪問的局部變量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( ) 函數:

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

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

#!/usr/bin/python

# Import built-in module math
import math

content = dir(math)

print content;

當執(zhí)行上面的代碼,產生以下結果:

['__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()函數:

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

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

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

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

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

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

reload(module_name)

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

reload(hello)

Python中的包:

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

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

#!/usr/bin/python

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

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

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

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

  

 Phone/__init__.py

 為了讓所有的功能可用,當導入Phone,需要把__init__.py明確的import語句如下:

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

當添加完這些行到__init__.py,那么已經導入了Phone包所有這些類的使用。

#!/usr/bin/python

# Now import your Phone Package.
import Phone

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

當執(zhí)行上面的代碼,產生以下結果:

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

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

相關文章

  • python處理csv數據的方法

    python處理csv數據的方法

    這篇文章主要介紹了python處理csv數據的方法,實例分析了Python處理csv數據的技巧,需要的朋友可以參考下
    2015-03-03
  • 使用Matplotlib繪制不同顏色的帶箭頭的線實例

    使用Matplotlib繪制不同顏色的帶箭頭的線實例

    這篇文章主要介紹了使用Matplotlib繪制不同顏色的帶箭頭的線實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-04-04
  • Python中函數相關的變量作用域

    Python中函數相關的變量作用域

    這篇文章主要介紹了Python中函數相關的變量作用域,變量的作用域是指程序代碼能夠訪問該變量的區(qū)域,如果超出該區(qū)域,在訪問時就會出現錯誤,需要的朋友可以參考下
    2023-08-08
  • 解決python中導入win32com.client出錯的問題

    解決python中導入win32com.client出錯的問題

    今天小編就為大家分享一篇解決python中導入win32com.client出錯的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-07-07
  • Python try except else使用詳解

    Python try except else使用詳解

    這篇文章主要介紹了Python try except else使用詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-01-01
  • Python PyQt5標準對話框用法示例

    Python PyQt5標準對話框用法示例

    這篇文章主要介紹了Python PyQt5標準對話框用法,結合實例形式分析了PyQt5常用的標準對話框及相關使用技巧,需要的朋友可以參考下
    2017-08-08
  • Python字符串格式化str.format()方法的實現

    Python字符串格式化str.format()方法的實現

    字符串的格式化是一個非常重要的功能,用于創(chuàng)建包含變量值的字符串,本來就來介紹一下Python字符串格式化str.format()方法的實現,感興趣的可以了解一下
    2023-11-11
  • pampy超強的模式匹配工具的實現

    pampy超強的模式匹配工具的實現

    在自然語言處理界,模式匹配可以說是最常用的技術。甚至可以說,將NLP技術作為真實生產力的項目都少不了模式匹配。本文就介紹了pampy超強的模式匹配工具的實現,感興趣的可以了解一下
    2021-07-07
  • 如何使用 Python 讀取文件和照片的創(chuàng)建日期

    如何使用 Python 讀取文件和照片的創(chuàng)建日期

    這篇文章主要介紹了如何使用 Python 讀取文件和照片的創(chuàng)建日期,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-09-09
  • pandas將DataFrame的列變成行索引的方法

    pandas將DataFrame的列變成行索引的方法

    下面小編就為大家分享一篇pandas將DataFrame的列變成行索引的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-04-04

最新評論