python入門筆記 三

2021-09-02 21:29:45 字數 4684 閱讀 7073

#抽象

#判斷函式是否可呼叫

callable(x) #python2

hasattr(func.__call__) #python3

#文件字串

def square(x):

'這是......'

return x*x

print square.__doc__

help(square)

n=['a','b','c']

def change(n):

n[0]='v'

print n #['v','b','c'] #列表會被改變,此類情況需要在函式內建立新的變數並賦值

#將值放在列表中,可被改變

def inc(x):x[0]=x[0]+1

a=[10]

inc(a)

print a #11

#以上為未知引數,以下為關鍵字引數

def hello(greeting='a',name='b'): #可以提供預設值

print '%s,%s!'%(greeting,name)

hello(greeting='hello',name='world') #這樣就不影響傳參順序了

#位置引數和關鍵字引數可以混用

def hello(name,greeting='hello',punctuatuin='!'): #需要將位置引數放前邊

print '%s,%s%s'%(greeting,name,punctuatuin)

#收集引數

def print_params(title,*params): #*的意思是收集其他位置引數,只能收集位置引數

print title

print params #元組

def print_params(**params): #**只收集關鍵字引數

print params #字典

#星號只在定義不定數目的引數或分割字典或序列時才有用

#變數#變數儲存在不可見字典中,vars()函式可以返回這個字典

x=1scope=vars()

scope['x']

#1scope['x']+=1x#2

#此類不可見字典叫做命名空間或作用域

globals() #返回全域性變數的字典

locals() #獲取區域性變數的字典

#函式內宣告全域性變數

x=10

def change_global():

global x

x+=x

change_global()

x#11

#python函式可以巢狀

def foo():

def bar():

print 'hello'

bar()

#map

map(str,range(10)) #將序列中的值全部傳給函式,等價於[str[i] for i in range(10)]

#filter

def func(x):

return x.isalnum()

seq=["foo","x41","?!","***"]

filter(func,seq) #可以基於乙個返回值為boolean的函式過濾

['foo','x41']

#等價於

[x for x in seq if x.isalnum()]

#等價於

filter(lambda x:x.isalnum(),seq) #lambda表示式

#reduce:處理序列中前兩個值,其結果與第三個值再進行處理,依次,直到整個序列處理完

numbers=[1,2,3,4,5,6,7,8,9]

reduce(lambda x,y:x+y,numbers) #返回序列中所有值的和

45#等價於

sum(numbers) #求和函式

#更加抽象

#建立類

__metaclass__=type #確定使用新式類,3.0以後不存在舊式類

class persion:

def setname(self,name): #self用於訪問本身,必須作為第乙個引數

self.name=name

def getname(self):

return self.name

def greet(self):

print "hello,world!i`m %s."%self.name

#私有變數或方法

#在構造類時,變數或方法的名字前加上雙下劃線,即可成為私有方法或變數,實際上名字加上雙下劃線後,名字會被轉換成(_類名__名字)的形式,通過此名字可以訪問

#python沒有真正的私有化支援

class a:

def __aa():

print "a"

def b(self):

self.__a()

a.__aa() #報錯

a._a__aa #依然可以訪問,不建議這麼做

#帶有單下劃線的名字,不會被import *引入

#繼承,a繼承b

class a(b):

def init():

pass

#調查繼承

issubclass(a,b) #檢查a是否b的子類

a.__bases__ #檢查a的父類

o.__class__ #檢查物件是哪個類的例項

isinstance(o,a) #檢視乙個物件是否乙個類的例項

types(s) #檢視物件是哪個類的例項,限新式類

#多重繼承

class c(a,b): #注意順序,前邊類中的方法會覆蓋後邊的,例如:若a中有k(),b中有k(),則c中的k()為a中的k()

pass

random.choice(seq) #從非空序列隨機選擇元素

hasattr(object,name)

getattr(object,name[,default])

setattr(object,name,value)

#異常#自定義異常

class someexception(exception):pass

raise exception

try:

...except someexception:

if ...:

...else:

raise

except (otherexception,bexception,cexception):

...except (dexception,eexception),e: #python 3.0為except (dexception,eexception) as e

print e

except:

print 'some wrong!'

else:

print 'well'

finally:

print 'finally'

#引入自己的模組

import sys

import hello

#在模組中定義測試**

#hello.py

def hello():

...def test():

...if __name__=='___main__': #當作為模組時,__name__為hello

test()

"""引入自己的模組方法

1、將模組檔案放在python庫目錄,推薦c:\\python\\lib\\site-package(pprint.pprint(sys.path))

2、告訴編譯器去**找,bashshell如下:

環境變數:.bashrc中加入 export pythonpath=$pythonpath:~python

"""#包(__init__.py檔案用於定義包)

#ds/__init__.py

pi=3.14

#將模組檔案放入ds目錄即可

import ds

print ds.pi

#引入import drawing #僅可以使用__init__.py中的內容,不可以使用模組

import drawing.colors #可以通過全名drawing.colors使用模組

from drawing import shapes #可以通過短名shapes使用模組

"""**模組(以copy為例)

1、>>>>import copy

>>>>[n for n in dir(copy) if not n.startswith('_')]

#說明copy模組一共有這些變數

2、>>>>copy.__all__

["a","b","c","d"]

#說明copy模組定義的公有介面是這些

#from copy import * 只能匯入copy.__all__中的變數

#若要使用其他變數,需要顯性實現。如匯入copy模組m後,使用m.a(),或者from m import a

#__all__指定需要的變數、函式、類,如果不設定__all__,import * 會把所有變數匯入進去

3、>>>>help(copy.copy)

#若有__doc__變數

>>>>print copy.copy.doc

4、5、原始碼(檔案位置)

>>>>print copy.__file__

"""#模組

#sys

python入門學習筆記(三) 切片 元組

4.操作列表 4.1遍歷整個列表 forname x y z for x in name in後面是可迭代物件 不要忘記 迴圈內容要縮排,縮排是靈魂 print x 編譯結果 x yz4.2建立乙個數值列表 4.2.1 range for x in range 1,5 print x 12 344....

Python 入門筆記

前一段時間看了九天雁翎 http hi.csdn.net vagrxieeasy but powerful 總體感覺python的庫功能極其強大,這樣使得python 密度很高,用c 10行實現的內容,python可能不到3行就能實現了。當然這樣會損失一些效率,但是實現一些小的應用軟體不會有什麼問題...

python入門筆記( )

變數賦值 counter 0 miles 1000.0 name xumesang n 10 2.字串 str python str 0 p str 1 n str 2 pythonpython 3.列表,元組和字典 list 1,2,3,4 元素可變 tuple xumesang 23,101 元...