Python3教學
Python3引入什麼新的東西?
Python3環境安裝設置
Python3基礎語法
Python3變量類型
Python算術運算符實例
Python3比較運算符實例
Python3賦值運算符實例
Python3位運算符實例
Python3邏輯運算符實例
Python3成員運算符實例
Python3標識運算符實例
Python3運算符優先級示例
Python3基本運算符
Python3 if語句
Python3 if...elseif...else語句
Python3嵌套if語句
Python3決策
Python3 while循環語句
Python3 for循環語句
Python3嵌套循環
Python3 break語句
Python3 continue語句
Python3 pass語句
Python3循環
Python3 abs()函數
Python3 ceil()函數
Python3 exp()函數
Python3 fabs()函數
Python3 floor()函數
Python3 log()函數
Python3 log10()函數
Python3 max()函數
Python3 min()函數
Python3 modf()函數
Python3 pow()函數
Python3 round()函數
Python3 sqrt()函數
Python3 choice()函數
Python3 randrange()函數
Python3 random()函數
Python3 seed()函數
Python3 shuffle()函數
Python3 uniform()函數
Python3 acos()函數
Python3 asin()函數
Python3 atan()函數
Python3 atan2()函數
Python3 cos()函數
Python3 hypot()函數
Python3 sin()函數
Python3 tan()函數
Python3 degrees()函數
Python3 radians()函數
Python3數字
Python3 string.capitalize()方法
Python3 string.center()方法
Python3 string.count()方法
Python3 string.decode()方法
Python3 string.endswith()方法
Python3 string.expandtabs()方法
Python3 string.encode()方法
Python3 string.find()方法
Python3 string.index()方法
Python3 string.isalnum()方法
Python3 string.isalpha()方法
Python3 string.isdigit()方法
Python3 string.tolower()方法
Python3 string.isnumeric()方法
Python3 string.isspace()方法
Python3 string.istitle()方法
Python3 string.isupper()方法
Python3 string.join()方法
Python3 string.len()方法
Python3 string.ljust()方法
Python3 string.lower()方法
Python3 string.lstrip()方法
Python3 string.maketrans()方法
Python3 string.max()方法
Python3 string.min()方法
Python3 string.replace()方法
Python3 string.rfind()方法
Python3 string.rindex()方法
Python3 string.rjust()方法
Python3 string.rstrip()方法
Python3 string.split()方法
Python3 string.splitlines()方法
Python3 string.startswith()方法
Python3 string.strip()方法
Python3 string.swapcase()方法
Python3 string.title()方法
Python3 string.translate()方法
Python3 string.upper()方法
Python3 string.zfill()方法
Python3 string.isdecimal()方法
Python3字符串
Python3 list.cmp()方法
Python3 list.len()方法
Python3 list.max()方法
Python3 list.min()方法
Python3 list.list()方法
Python3 list.append()方法
Python3 list.count()方法
Python3 list.extend()方法
Python3 list.index()方法
Python3 list.insert()方法
Python3 list.pop()方法
Python3 list.remove()方法
Python3 list.reverse()方法
Python3 list.sort()方法
Python3列表
Python3 tuple.cmp()方法
Python3 tuple.len()方法
Python3 tuple.max()方法
Python3 tuple.min()方法
Python3 tuple.tuple()方法
Python3元組
Python3 dictionary.cmp()方法
Python3 dictionary.len()方法
Python3 dictionary.str()方法
Python3 dictionary.type()方法
Python3 dictionary.clear()方法
Python3 dictionary.copy()方法
Python3 dictionary.fromkeys()方法
Python3 dictionary.get()方法
Python3 dictionary.has_key()方法
Python3 dictionary.items()方法
Python3 dictionary.keys()方法
Python3 dictionary.setdefault()方法
Python3 dictionary.update()方法
Python3 dictionary.values()方法
Python3字典
Python3 time.altzone()方法
Python3 time.asctime()方法
Python3 time.clock()方法
Python3 time.ctime()方法
Python3 time.gmtime()方法
Python3 time.localtime()方法
Python3 time.mktime()方法
Python3 time.sleep()方法
Python3 time.strftime()方法
Python3 time.time()方法
Python3 time.tzset()方法
Python3日期和時間
Python3函數
Python3模塊
Python3 file.close()方法
Python3 file.tell()方法
Python3 file.truncate()方法
Python3 file.write()方法
Python3 file.writelines()方法
Python3 file.flush()方法
Python3 file.fileno()方法
Python3 file.isatty()方法
Python3 file.next()方法
Python3 file.read()方法
Python3 file.readline()方法
Python3 file.readlines()方法
Python3 file.seek()方法
Python3文件方法
Python3 os.access()方法
Python3 os.chdir()方法
Python3 os.chflags()方法
Python3 os.chmod()方法
Python3 os.chown()方法
Python3 os.chroot()方法
Python3 os.close()方法
Python3 os.closerange()方法
Python3 os.dup()方法
Python3 os.dup2()方法
Python3 os.fchdir()方法
Python3 os.fchmod()方法
Python3 os.fchown()方法
Python3 os.fdatasync()方法
Python3 os.fopen()方法
Python3 os.fpathconf()方法
Python3 os.fstat()方法
Python3 os.fstatvfs()方法
Python3 os.fsync()方法
Python3 os.ftruncate()方法
Python3 os.getcwd()方法
Python3 os.getcwdu()方法
Python3 os.isatty()方法
Python3 os.lchflags()方法
Python3 os.lchmod()方法
Python3 os.lchown()方法
Python3 os.link()方法
Python3 os.listdir()方法
Python3 os.lseek()方法
Python3 os.lstat()方法
Python3 os.major()方法
Python3 os.makedev()方法
Python3 os.makedirs()方法
Python3 os.minor()方法
Python3 os.mkdir()方法
Python3 os.mkfifo()方法
Python3 os.mknod()方法
Python3 os.open()方法
Python3 os.openpty()方法
Python3 os.pathconf()方法
Python3 os.pipe()方法
Python3 os.popen()方法
Python3 os.read()方法
Python3 os.readlink()方法
Python3 os.remove()方法
Python3 os.removedirs()方法
Python3 os.rename()方法
Python3 os.renames()方法
Python3 os.rmdir()方法
Python3 os.stat()方法
Python3 os.stat_float_times()方法
Python3 os.statvfs()方法
Python3 os.symlink()方法
Python3 os.tcgetpgrp()方法
Python3 os.tcsetpgrp()方法
Python3 os.tempnam()方法
Python3 os.tmpfile()方法
Python3 os.tmpnam()方法
Python3 os.ttyname()方法
Python3 os.unlink()方法
Python3 os.utime()方法
Python3 os.walk()方法
Python3 os.write()方法
Python3 os文件目錄的方法
Python3文件操作
Python3標準異常
Python3斷言
Python3異常處理

Python3模塊

模塊可以讓你從邏輯上組織你的Python代碼。 將相關的代碼放到一個模塊使代碼更容易理解和使用。 模塊是可以綁定和參考任意命名的Python對象屬性。

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

示例

例如:一個名爲 aname 模塊的 Python代碼通常放在一個指定爲 aname.py 的文件中。這裏有一個簡單的模塊,support.py 的例子

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

import 語句

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

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

當解釋程序遇到import語句,如果模塊存在於搜索路徑它將導入這個模塊。搜索路徑是一個目錄列表,解釋器導入模塊之前將進行搜索。例如,要導入模塊 hello.py,需要在腳本的頂部放置下面的命令 -

#!/usr/bin/python3

Import module support

import support

Now you can call defined function that module as follows

support.print_func("Zara")

當執行上面的代碼,它產生以下結果 -

Hello : Zara 

模塊被加載一次,不管它是導入(import)的次數。如果多個導入出現,這可以防止模塊執行一遍又一遍。

from...import 語句

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

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

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

#!/usr/bin/python3

Fibonacci numbers module

def fib(n): # return Fibonacci series up to n
result = []
a, b = 0, 1
while b < n:
result.append(b)
a, b = b, a+b
return result

>>> from fib import fib

fib(100)
[1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89] 

此語句不導入整個 fib 模塊到當前的命名空間; 它只是從 fib 模塊導入全局符號表中的項目fibonacci。

from...import * 語句:

也可以使用下面的 import 語句, 將一個模塊的所有名稱導入到當前的命名空間 -

from modname import * 

這提供了一種簡單的方法來導入模塊到當前命名空間中的所有項目; 不過,這一說法應該儘量少用。

執行模塊作爲腳本


在一個模塊,模塊名(做爲一個字符串)可以作爲全局變量__name__的值。該模塊中的代碼會被執行,就好像導入它一樣,但設定爲「__main__」的 __name__。這意味着,通過在模塊的末尾添加以下代碼:

#!/usr/bin/python3

Fibonacci numbers module

def fib(n): # return Fibonacci series up to n
result = []
a, b = 0, 1
while b < n:
result.append(b)
a, b = b, a+b
return result
if __name__ == "__main__":
f=fib(100)
print(f)

當我們運行上面的代碼,以下輸出將顯示

[1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89]

查找模塊


當導入模塊,在下面 Python解釋器將搜索模塊的序列 -

  • 當前目錄。

  • 如果沒有找到該模塊,然後 Python 將搜索 shell 變量 PYTHONPATH 的每個目錄.

  • 如果這些方法都失敗(未找到),Python檢查默認路徑。 在UNIX上,默認路徑通常是 /usr/local/lib/python3/.

模塊搜索路徑被存儲在系統模塊sys作爲所述的 sys.path 變量。sys.path中變量包含當前目錄,PYTHONPATH和安裝相關的默認目錄。

PYTHONPATH 變量:

PYTHONPATH 是一個環境變量,它由一個目錄列表組成。Python路徑中的語法與 shell 變量PATH相同。

下面是 Windows系統中一個典型的 PYTHONPATH :

set PYTHONPATH=c:\python34\lib;

這裏是 UNIX 系統的典型 PYTHONPATH :

set PYTHONPATH=/usr/local/lib/python

命名空間和範圍界定


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

使用Python編寫的語句可以在本地命名空間和全局命名空間訪問變量。如果本地和全局變量具有相同的名稱,局部變量將覆蓋全局變量。

每個函數都有它自己的本地名稱空間。 類方法與普通的函數遵循相同的範圍規則。

Python作出明智的猜測變量是局部還是全局的。它假定任何變量賦值在函數中的值是局部的。

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

聲明全局 VarName 告訴 Python 的 VarName 是一個全局變量。Python停止在局部命名空間搜索該變量。

例如,我們在全局命名空間定義一個變量Money。在函數變量 Money,我們給的 Money 的值,因此 Python 假定 Money 作爲一個局部變量。 然而,我們將其設置之前計算局部變量 Money 的值, 所以一個 UnboundLocalError 錯誤被引發。取消全局聲明解決了這個問題。

#!/usr/bin/python3

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/python3

Import built-in module math

import math

content = dir(math)

print (content)

當執行上面的代碼,它產生以下結果 -

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

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

因此,如果你希望模塊重新執行的頂層代碼, 可以使用 reload()函數。在reload()函數會再次導入先前導入模塊。reload()函數的語法是這樣的 -

reload(module_name) 

在這裏,module_name 是要重新加載模塊,而不是包含模塊名稱的字符串。例如,要重新加載模塊 hello,請執行下列操作 −

reload(hello)

Python包


包是一個分層文件目錄結構,定義由模塊和子包和子子包等一個單一的Python應用環境。

考慮在 Phone 目錄下找到的文件Pots.py。此文件的源代碼如下面的行 -

#!/usr/bin/python3

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

類似的方式,這裏有不同功能的兩個相同名稱文件如下 -

  • Phone/Isdn.py有一個函數 Isdn()

  • Phone/G3.py 有一個函數 G3()

現在,在 Phone 目錄中創建一個文件__init__.py-

  • Phone/__init__.py

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

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

在添加這些行到 __init__.py 後,當導入 Phone 包所有的這些類可用。

#!/usr/bin/python3

Now import your Phone Package.

import Phone

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

當執行上面的代碼,它產生以下結果 -

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

在上面的例子中,我們已經在每個文件採取一個單一的函數示例,但可以保留多個函數在文件中。您還可以定義這些Python類不同的文件中,然後你可以創建包在那些類之外。