三天入门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;
二,类
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中如何使用函数如何定义类,基本内容如上所是,对于有点基础的兄弟们,完全不是问题;
阅读全文
0 0
- 三天入门Python---函数和类(第二天)
- python入门第二天——函数
- python入门第三天——类
- 第二十三天 时间函数
- 三天入门Python---文件操作(第三天)
- 第二天第三天
- 第二天+第三天
- python第二天-函数
- 学习python的第二十三天
- 第二十三天python学习记录
- python爬虫学习第二十三天
- Python入门 第三天(set、函数、切片、迭代、列表生成式)
- 三天入门Python---基本语法(第一天)
- python入门第三天——继承
- Python函数Map()和reduce()的区别和第二天学习Python的心得体会
- python入门第二天——数据结构
- python入门基础函数和匿名函数
- python--函数入门(函数和过程)
- JavaScript基础
- JAVA selenium——WebDriverException: Cannot find firefox binary in PATH.
- 微信小程序开发(6)---Tomcat配置阿里云SSL证书(配置HTTPS)
- python-numpy的各种函数的使用
- 欢迎使用CSDN-markdown编辑器
- 三天入门Python---函数和类(第二天)
- 如何用记事本编写你的第一个Java程序
- Scala学习初步
- jQuery 实现获取动态表格的值
- Scala类型检查与转换
- eclipse打jar包
- Linux_windows下文件名和内容乱码
- 邻接表图java实现
- 论Java的学习路线