变量的作用域:
程序代码能访问变量的区域
根据变量的有效范围可分为
局部变量
在函数内定义并使用的变量,只在函数内部有效,布局变量使用global声明,这个 变量就会成局部变量
全局变量
函数体外定义的变量,可用作于函数体外
递归函数
什么是递归函数
如果在一个函数体内用了该函数本身,这个函数就成为递归函数
递归函数的组成部分
递归调用与递归终止条件
递归的调用过程
每递归调用一次函数,都会在内存分配一个栈帧
每执行一次函数,都会释放相应的空间
递归的优缺点
缺点:占用内存多,效率低下
有点,思路和代码简单
#递归函数:样例一 def fac(n): if n == 1: return 1 else: a = (n*fac(n-1)) return a print(fac(6))
样例二:斐波那契数列 def fib(n): if n == 1: return 1 elif n ==2: return 2 else: return fib(n-1)+fib(n-2) #print(fib(8)) for i in range(1,9): print(fib(i))
Bug常见的类型
1. 粗心导致的错误:
2.知识点不熟导致的错误
3.思路不清楚导致的错误
异常处理机制:
1.try ......except....
2.try ......except....else
3.try ......except....else....finally(无论是否异常,都会被执行)
常见的异常类型
异常常见的处理机制
traceback模块
使用traceback模块打印异常信息
import traceback
try:
.......
except:
traceback.print_exc()
类
是多个类似事务组成的群体统称。
类的组成
类属性(直接写在类里面的变量,称为类属性)
实例方法(在类内定义的函数)
静态方法(@staticmethod进行修饰)
类方法(@classmethod进行修饰)
初始化方法 class Student: def __init__(self,name,age): self.name=name #self.name称为实例属性,进行了一个赋值操作,将局部变量的name值赋给实例属性 self.age=age
创建student类对象的方法
stu1=Student(张三‘,20)
调用方法:
1.stu1.Student.eat()
2.Student.eat(stu1)
注意cm或sm都是定义的方法名