三天入门Python---函数和类(第二天)

来源:互联网 发布:淘宝商家信誉怎么看 编辑:程序博客网 时间:2024/06/05 22:50

本文作为三天入门Python的第二篇,主要讲最函数和类,这一块掌握之后,写基本的代码就不是问题了。

一,函数

1,函数声明

形式如下:

def 函数名  (参数列表):

        函数语句

        return  返回值

例如:

>>> def FucA(a, b):          #FucA为函数名,a, b为参数,不需要指定类型return a + b            #返回值>>> print(FucA(1, 2))         #调用3>>> 

2,函数参数

①关键字参数

>>> >>> def Func(a = 1):    #a已经赋值为1,这种形式的参数称为关键字参数return a>>> print(Func())       #此处调用时如果不给参数赋值,则使用默认参数值1,否则,则使用参数具体的值1>>> 

②可变长参数

如果参数前面有一个*号,则表示该参数为可变长参数,假如有1个可变长参数*a,实际输入多过参数,那么多余的参数将会被放到a中;

>>> def cFF(*tpl, a, b = 0):    #定义一个函数cFF, tpl为可变长参数,b为关键字参数,a为普通参数,注意,具体调用时,参数的顺序没有严格要求print('tpl:', tpl)print('a:', a)print('b:', b)>>> cFF(1,2,3,a=1)              #此处输入参数个数多于函数声明的参数个数,因此,多余的参数会放入可变长参数tpl中tpl: (1, 2, 3)                  #tpl存放多余的参数a: 1b: 0>>> cFF(1,2,3,a=1,b=2)tpl: (1, 2, 3)a: 1b: 2>>> 

③关键字收集参数

如果参数中有两个星号**,则该参数表示关键字收集参数,它可以把多余的关键字参数收集到字典中去;

>>> >>> def Func(a = 1, b = 2, **dict):          #dict为关键字收集参数print('a:', a)print('b:', b)print('dict:',dict)>>> Func(1,2,c = 3, d = 4)a: 1b: 2dict: {'d': 4, 'c': 3}              #多余的关键字参数被收集到了dict字典中去>>> 

④匿名函数lambda

lambda 参数  :  表达式

参数:相当于声明函数时参数列表中用逗号分隔的参数

表达式:是函数返回值得表达式

⑤pass语句

pass语句为空语句,如果函数中只有pass语句,那么返回值为None,并非0;


函数的精华内容在此已经全部列出,相比c/c++/java而言,Python的形式更加灵活自由。

二,类

1,类的基本形式

>>> class SmplClass:              #SmplClass为类名,后面的冒号不能省略def info(self):           #info为自定义的一个函数,类里面所有函数第一个参数必须为selfprint('My class!')def mycacl(self, x, y):return x + y>>> sc = SmplClass()>>> sc.info()My class!>>> print(sc.mycacl (1,2))3>>> 
类有以下几点需注意:

①类里定义的函数,默认第一个参数必须为self,不可省略;

②类的静态方法必须用@staticmethod修饰;

③类的方法定义必须用@classmethod修饰,且必须有默认参数cls

例如:

>>> class MyClass:class_name = "MyClass"def init(self,x = 0):self.x = xprint('类的变量x:',self.x)@staticmethod                                      #静态方法必须有此修饰def FuncS():print('调用了静态方法')@classmethod                                       #非静态方法必须由此修饰def FuncN(cls):                                    #方法的第一个参数必须为clsprint('调用了非静态方法')def FunSet(self, name): #改变类的属性MyClass.class_name = name>>> MyClass.class_name                                     #类的属性调用方式,类名.属性名>>> >>> myclass = MyClass()                     >>> myclass.FunSet ("YClass")                              #使用类的实例myclass来调用函数FunSet,这样只改变了当前实例中的class_name属性,并没有改变MyClass>>> myclass.class_name'YClass'>>> myclass.init(5)类的变量x: 5>>> myclass.FuncN ()调用了非静态方法>>> myclass.FuncS ()调用了静态方法>>> MyClass.FuncS ()                                        #采用类名.方法名()的方式调用,会改变类本身MyClass,这样会改变所有类的实例调用了静态方法>>> MyClass.FuncN()
调用了非静态方法

2,继承和多重继承

类的继承很简单,形式如下:

>>> >>> class A:                                               #定义基类Adef BaseFunc(self, x = 0):self.x = xprint('x:',self.x)>>> class B (A):                                           #定义类B,继承类Adef BFunc(self, y = 1):self.y = yprint('BClass y:',self.y)
多重继承:

>>> class C (B,A):                                         #多重继承,继承的多个类之间用逗号,分隔开来

3,函数重载

在子类中如果要重载函数A,只需要重写一个与A重名的函数即可;

总结

函数和类不管是那种高级语言,都是精华的内容,Python中如何使用函数如何定义类,基本内容如上所是,对于有点基础的兄弟们,完全不是问题;



原创粉丝点击