python的函数、类、异常

来源:互联网 发布:摄影后期知乎 编辑:程序博客网 时间:2024/06/05 06:09

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

 

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


原创粉丝点击