1.前言 python
前面讲了一些关于python的一些基本的语法及语句,在这个地方继续讲python的方法及其python核心概念的面向对象。咱们都知道python被称为面向对象的语言,那么在这里咱们将正式的接触 的python的核心。函数
2.函数 spa
定义:是可调用的,执行某种行为并返回一个值。判断一个函数是否能够调用,可使用内置的callable函数。在下面的列子中,x返回false,cal返回true。 code
1 def cal(): 2 return 'function' 3 x=1 4 5 print(callable(x)) 6 print(callable(cal))
在上面的函数中,咱们能够在括号中指定参数名称,这样就能把咱们须要的参数传递到方法函数中。但在传递参数过程当中,咱们须要注意函数的做用域,即当前函数在某一段代码中起做用,在其余中没法访问。两个相同的值的变量,在表面现象,咱们看起来吃相等的,可是实际在程序中他们是不等。对于在函数中赋值,一样会存在一个这个问题。例如: 对象
1 names=['a','b','c'] 2 n=names[:] 3 4 print(n is names) 5 6 print(n==names)
在 ‘n is names’返回false,而‘n==names’返回true。表面上咱们看到的时候n和names的值相等,可是n不必定就是names,这里会涉及到引用的一个问题,咱们在建立一个变量时,系统会自动为他分配一个至关因而一个惟一的标识,同理,在这个地方,咱们同时建立了n和names,系统会分配不一样的标识,虽然n是经过names赋值的。但在这里只能说他们的值相等,而不能说n就是names。
blog
如今咱们在函数中传递的参数都叫作位置参数,由于他们的位置是不可变的,若是将位置改变以后,那在对应调用函数时,传递参数的值的位置也须要发生改变,不然会发生参数传递错误的现象。在python中,咱们能够对函数的参数赋默认值,这样当在调用函数时,若是不须要参入本身想要的参数,那么能够不传。方式为在参数后面紧跟默认值。继承
递归
递归
在函数中,函数能够调用其它函数,可是也能够调用本身自己。对于调用本身自己的函数,咱们通常称之为为递归。
内存
在递归函数中主要包含两部分:作用域
1.当函数之间返回值时,有基本实例
2.递归实例,包括一个或者多个问题较小部分的递归引用
关键在于将问题分解为小部分,递归不能永远的执行下去,不然就成了所谓的死循环。由于在递归中总以最小可能性问题结束,而这些问题有存储在基本实例中。
1 ''' 2 阶乘 3 ''' 4 def factorial(n): 5 if n==1: 6 return n 7 else: 8 return n*factorial(n-1) 9 10 ''' 11 幂 12 ''' 13 def power(x,n): 14 if n==0: 15 return 1; 16 else: 17 return x*power(x,n-1)
3.面向对象
对象:能够看做数据(特性)以及由一系列以存取/操做这样数据的方法所组成的集合。使用对象替代全局变量和函数的缘由有不少,其中对象最重要的优势主要在如下几方面:
1.多态,能够将不一样类的对象使用一样的操做
2.封装,对外部世界隐藏对象的工做细节
3.继承:以通用的类为基础创建专门的类对象
多态:不知道变量所引用的的对象类型是什么,仍是能对它进行操做,而它也会根据对象(或类)类型的不一样而表现出不一样的行为。isinstance进行类型/类的检查
方法:绑定到对象特性上面的函数
封装:向程序中的其余部分隐藏对象的具体实现细节的原则
方法和函数的区别在于第一个参数是否为self。在类中的方法,默认第一个参数为self,特指当前的引用,而方法咋没有。
4.异常
在程序中,咱们常常会遇到一些临界的界点状况,好比除数为0等状况。默认的解决办法是在进行操做以前,对数据进行判断筛选,可是当状况比较多的时候,这个时候作验证时就比较麻烦,并且不易于可读。在python中,存在一种异常处理的机制,使用try .............. except来进行异常的捕获处理。在正常的程序中,咱们也可使用raise来触发一个异常,结束当前的操做。
python中自置了比较经常使用的几种异常,可是它的基类为exception,咱们能够手动的扩展异常的类型,来丰富咱们的异常处理。固然咱们也能够直接使用基类exception直接捕获异常,经过try............except Exception, e 使用对象e来输出异常的信息。
在异常处理中,先执行try中的语句块,若触发了异常,则执行except中的语句块。可是在咱们读取文件时,咱们会打开一系列的对象,若这时触发了异常,不手动关闭这些对象时,会形成内存必定的损耗。为了不这种状况,能够在except后添加finally。即无论前面执行如何,最后都会执行finally的语句块。这样就避免了内存的损耗。
5.写在最后
因为前期的文章都是先前本身看完的,在这以前的文章,都只是蜻蜓点水的看了一次,并再一次对本身作了一个总结。对于后续的文章,须要本身边看边思考边理解,可能文章更新的进度比较慢,尽可能保证每周2篇,还请你们谅解。若在文中有什么没讲清楚或者存在错误的地方,但愿你们多多批评指出,多多交流,你们共同进步。
若是对你有必定的帮助,麻烦点个赞!
若须要转载,请标明出处!