python的函數、類、異常

五、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  相當於javathis

 

---------------------------------------------

#定義一個經典類

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" #如果以上正常捕捉異常則會執行該語句,反之不會

 

#indexErrorelse

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) #好像不支持

 

-----------------------------------------------------


發佈了49 篇原創文章 · 獲贊 60 · 訪問量 18萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章