五、python的函數、類、異常
函數:
定義函數:def fun(para1,para2,...),圓括號不能少。
函數可以有多個返回值,通常被封裝成元組返回。你不封裝會自動封裝
函數也是對象,可以做參數傳遞和返回
思考方法的重載和重寫問題???先弄清楚爲什麼需要重載和重寫
-------------------------------------
def fun1(): #括號必須要
return u"無參數,無返回值"
def fun2(x):
print u"有參數,有返回值"
return x,True,None,"hello"
x,y,z,w=fun2("python")
a=fun2(u"你好")
print fun1()
print x,y,z,w
print a
#簡單的函數式編程
def handleText(text):
print 'text '+text
def handleHtml(html):
print 'html '+html
def msg(x):
if x == "html":
return handleHtml #不能加上空的圓括號
else :
return handleText
msg("text")("hello world")
--------------------------------------
類:
定義類: calss a
經典類和新式類:區別是經典類不繼承Object,而新式類要繼承Object
繼承: class a(b) 類a繼承b類
多重繼承: class a(b,c)
構造函數: def __init__
self 相當於java中this
---------------------------------------------
#定義一個經典類
class a() :
pass
a=a() #創建一個對象
#定義一個新式類
class b(object) :
pass
b=b()
#定義一個帶有構造器的類
class A():
def __init__(self,x,y):
self._x=x
self._y=y
def __str__(self):
return self._x + " " + self._y
a=A("hello","world")
print a
-------------------------------------------------------
異常處理:
try : .... except : ...
常見的異常:
KeyError 沒有key異常
indexError 數組下標越界
NameError 沒有該變量
ValueError 沒有對應的值
支持else分支,如果麼有異常,則執行else分支代碼塊
------------------------------------------------------
#異常
a=dict(name="zhangsan",age=19) #dict是定義字典的
#print a["sex"] #會報錯爲KeyError
try:
print a["sex"]
except :
print "no key error"
print "exception is ok" #如果以上正常捕捉異常則會執行該語句,反之不會
#indexError和else
a=range(1,10)
#a=range(1,20)
#a[11]=100 #會報錯爲indexError
try:
a[11]=100
except IndexError:
print "index out of tuple"
else :
print a[11]
--------------------------------------------------------
模塊:
用模塊組織代碼
通過導入共享代碼
import ... as ...
使用模塊中的內容
dir()列出模塊中的內容
help()查出模塊中的幫助信息
-------------------------------------------------
先重新建立一個python文件叫demo:
#!/usr/bin/python
#-*-coding:utf8-*-
class A():
pass
def fun():
return "hello python"
#如下是原來文件中的代碼:::
#模塊引入
import demo
import demo as d #名字長咯可以起別名
print demo.fun()
print d.fun()
a = d.A() #創建對象
#只引入文件中的一部分,當文件內容太多時
from demo import fun,A as a #引入指定的部分
print fun() #引入的指定部分已經加載到該文件的命名空間中
a=a()
#查看引入內容
dir(d)
#help(d) #好像不支持
-----------------------------------------------------