Python2.7 學習筆記 (二)—— 函數,模塊,正則

2012-3-9
[函數]
1.函數 
def functionName (param1,param2,...):     #參數可選,以逗號隔開
return <return value>             # optional,可以沒有return

def hello():
print 'hello world!'   #要有縮進

def listSum(list): #不需要指明數據類型,python 會自動處理
sum =0
for i in list:
sum +=i
return sum

2.函數調用
r=hello() #輸出hello world
print r   #輸出none

3.默認參數
def cube(x=5): # x默認值爲5
return x**3 #返回x的乘方

4.參數傳遞-按順序
def sum (x,y,z) :
return x+y+z

sum(1,2,3) #按參數順序傳遞

5.參數傳遞-按名字
def sum (x,y,z) :
return x+y+z

sum(1,z=2,y=3)  #按參數名字傳遞

6.可變長參數
參數使用*開頭,就是可變長參數,即參數可以是1個,或者多個
def appendParams(*list):
temp =[]
for i in list          #可以是一個list或者多個list
temp.extend(i) #把list裏的值加到temp裏面
return temp

a=[1,2]
b=[3,4]
print appendParams(a,b)   #輸出 [1,2,3,4]

7.作用域
內置作用域:python內置
全局作用域:當前文件範圍
局部作用域:函數

8.lambda表達式 

#感覺沒太大用處,瞭解即可

聲明一個匿名函數,lambda裏不能使用print,不能使用其他語句(帶冒號的)
fun = lambda x:x*x -x 
fun(3)   #輸出6

[模塊]
模塊就是以.py結尾的,包含函數和變量的Python文件
1.導入模塊
import 模塊名
improt 模塊名 as 新名字
from 模塊名 import 函數名   #使用from導入函數時, 調用函數時不需要加模塊名

import string
print string.capitalize("hello") #輸出Hello

from string import *    #導入string裏面所有的函數
print capitalize("hello")  #輸出Hello

2.編寫模塊
新建一個文件 testModule.py 
內容如下
def show():
print 'hello module'
name='I am module name'

其他python文件裏
import testModule
testModule.show()  #輸出hello module


3.模塊變量
相當於java裏的類變量,屬於全局變量
import testModule
print testModule.name  #輸出I am module name
testModule.name ='new module name'
print testModule.name  #輸出new module name

4.模塊路徑
默認路徑是當前目錄下,以及sys模塊中的path變量裏面查找
import sys 
import os
print sys.path #輸出path 
modulePath=os.getcwd()+'\\module'  #os.getcwd()得到的是當前目錄
sys.path.append(modulePath)
print sys.path

5.模塊編譯
import py_compile
py_compile.compile('module.py') #目錄下會出現一個module.pyc 

優化編譯,後綴是.pyo
python -o module.py  #優化編譯,力度小,不會出錯
python -oo module.py #優化編譯,力度大,但是可能會有錯

6.__name__屬性
如果模塊被其他模塊導入,__name__屬性爲該模塊的名字 
如果模塊沒有被其他模塊導入,則__name__屬性爲__main__
if __name__ == '__main__':
print 'I am not a module'
else:
print 'I am '+ __name__ 

7.dir()函數
獲取模塊裏的所有變量名,函數名
import sys
print dir(sys)  #列出sys裏所有的變量,函數名
a=[1,2]
b='test'
print dir()  #列出當前目錄所有變量函數名

8.模塊包 Package
C:\PYTHON27\TEST\PACKAGE
└─A
    │  __init__.py
    │  
    ├─B
    │      test1.py
    │      __init__.py
    │      
    └─C
            test1.py
            test2.py
            __init__.py


把__init__.py 放在某個目錄下,則該目錄成爲一個package
引入package的主要目的就是減少module的命名衝突


from A.B import test1 
import A.B.test1       #這兩種都是一樣的


[正則表達式]
1.基本元字符
. 匹配除換行符以外的任何單個字符   r.d匹配red,rid,rad
* 匹配*之前的任意個字符            r*d 匹配 rd,rrd,rrrrd 
+ 匹配*之前的1個或多個字符 r+d 匹配 rrd,rrrrd 
| 匹配|之前或之後的字符 red|blue匹配red,blue
^ 匹配行首  
$ 匹配行尾
? 匹配?之前的0個或1個字符 r?d匹配rrd,rd
\ 轉義字符
[] 匹配位於[]內的任何一個字符r[ae]d匹配rad,red
() 將位於()內的內容當作一個整體 
{} 按{}內的次數進行匹配             13[0-3][0-9]{8} 匹配聯通號碼


2.元字符的組合使用
.*匹配任意個字符   r.*d匹配rd,read,red
.+匹配任意一個或者多個字符 
.?匹配任意的一個或者0個字符
[a-z] 匹配a到z之間的小寫字母
[a-zA-Z0-9]匹配任意字母或者數字

16:30 2012-3-9

正則表達式暫且下跳過吧,能看懂簡單的即可,等以後再返回細學~

TO Be continued ...
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章