以mark lutz著的《python學習手冊》為教程,每天花1個小時左右時間學習,爭取兩周完成。 --- 寫在前面的話
2013-7-21 22:00 學習筆記
1,def是python中的乙個可執行語句——函式並不存在,直到python執行了def後才存在。def建立了乙個物件,並將其賦值給乙個變數名,這個變數名就是函式名。def可以出現在任一語句可以出現的地方——甚至是巢狀在其他語句中。例如:
def times(x,y):
return x*y
print times(2,3)
print times('mathboy',3)
結果為:
6
mathboymathboymathboy
2,def定義的變數只能在def內被使用,不能再函式外部被使用。乙個在def之外被賦值的變數x與乙個在def內被賦值的變數x是完全不同的兩個變數。
3,python變數可以分為本地(def內部,除非用global宣告)、全域性(模組內部)、內建(預定義的__builtin__模組)。全域性宣告global會將變數名對映到模組檔案內部的作用域。變數名的引用將依次查詢本地、全域性、內建變數。例如:
x = 99
def add(y):
z = x + y
return z
print add(1)
結果為:
100
4,global語句用於宣告乙個或多個全域性變數。例如:
x = 88
def func():
global x
x = 99
func()
print x
輸出結果為:
99
再例如:
y,z = 1,2
def func():
global x
x = y + z
func()
print x,y,z
結果為:
3 1 2
5,匯入乙個模組後,該模組的全域性變數就成為該模組物件的屬性。檔案間通訊,不要這樣做:
# first.py
x = 99
# second.py
import first
first.x = 88
而應該這樣做:
# first.py
x = 99
def setx(new):
global x
x = new
# second.py
import first
first.setx(88)
6,函式是可以巢狀的。例如:
def f1():
x = 88
def f2():
print x
f2()
f1()
結果為:
88
7,函式巢狀可以用於實現工廠函式。例如:
def maker(m):
def action(x):
return x**m
return action
f = maker(3)
print f(2)
輸出結果為:
8
8,函式可以有預設引數。例如:
def fun(a,b=3):
return a+b
print fun(1,2)
print fun(2)
結果為:
3
5
9,def中還可以使用lambda表示式。例如:
def func():
x = 4
action = (lambda n: x**n)
return action
f = func()
print f(3)
輸出結果為:
64
10,python函式中,不可變引數(例如數字和字串)是「通過值」進行傳遞的,可變物件(例如列表和字典)是通過「指標」進行傳遞的。例如:
def func(a,b):
a = 1
x = 0
y = [0]
func(x,y)
print x,y
結果為:
0 [0, 1]
11,python函式的返回值可以有多個變數,相當於返回的是乙個元組,只是圓括號()被省略了。例如:
def set(a,b):
a = 3.14
b = [1,2,3]
return a,b
x = 6.28
y = [4,5,6]
x,y = set(x,y)
print x
print y
輸出結果為:
3.14
[1, 2, 3]
12,python支援關鍵字引數,所有基於位置的引數將首先按照從左到右的順序匹配頭部的引數,之後再進行基於變數名的關鍵字匹配。例如:
def fun(a,b,c):
print a,b,c
fun(1,c=3,b=2)
fun(c=3,a=1,b=2)
輸出結果為:
1 2 3
1 2 3
13,預設引數和關鍵字引數可以一起使用。例如:
def fun(a,b=2,c=3):
print a,b,c
fun(1,c=4)
輸出結果為:
1 2 4
14,python還支援函式的任意引數。第一種方法是在元組中收集不匹配的任意引數。第二種方法是在字典中收集不匹配的關鍵字引數。例如:
def func(a, *pargs, **kargs):
print a
print pargs
print kargs
func(1,2,3,x=1,y=2)
輸出結果為:
1
(2, 3)
15,在函式呼叫時也可以使用*語法,來分解引數的集合。例如:
def func(a,b,c,d):
print a,b,c,d
func(*(1,2,3,4))
func(1,*(2,3),**)
func(1,c=3,*(2,),**)
輸出結果為:
1 2 3 4
1 2 3 4
1 2 3 4
python 學習筆記十一 函式
實參型別 不定長引數 引數的裝包 引數的解包 返回值help 函式名 文件字串 作用域命名空間 namespace globals 遞迴式函式 高階函式 匿名函式 lambda 表示式 裝飾器最後 定義函式 格式 def 函式名 形參1 形參n 塊 注意 函式需要呼叫的時候才會執行 呼叫函式 格式 ...
python學習筆記 (十一)模組
模組是指乙個包含定義的函式和變數的檔案,其字尾名為.py。模組可以被別的程式引用,並使用其中的函式等功能。如果需要使用模組,只需要在新模組中匯入模組。使用import關鍵字 如 import module1,module2 乙個模組只會被匯入一次。from語句標識從模組中匯入乙個指定的部分到當前模組...
Python核心程式設計學習筆記(十一)
31 range 內建函式 1 range 的完整語法,要求提供兩個或三個整數引數 range start,end,step 1 range 會返回乙個包含所有k的列表,這裡start k end,從start到end,k每次遞增step。step不可以為零,否則將發生錯誤。range 2,19,3...