文章目录
1.递归函数 2.使用递归计算阶乘(factorial) 3.嵌套函数(内部函数) 4.nonlocal关键字 5LEGB规则 6.面向对象编程(将数据和操作数据相关封装) 7.对象的进化 8.类的定义 9.构造函数__init__() 10.实例属性
前言:没事就多练练题,没坏处
1.递归函数
自己调用自己的函数,在函数体内部直接或间接的自己调用自己。
代码段:
def skt01(n):
print("skt01:",n)
if n==1:
print("over")
else:
skt01(n-1) #不能skt01()
print("skt01*****",n)
def skt02():
print("skt02")
skt01(4)
2.使用递归计算阶乘(factorial)
代码段:
def factorial(n):
if n==1:
return 1
else:
return n*factorial(n-1)
result = factorial(5) #分形几何
print(result)
3.嵌套函数(内部函数)
#测试定义
def outer():
print("outer running")
def inner01():
print("inner running")
inner01()
outer() #不能调用inner01,外部看不见,外部无法看不见内部函数
#可以降低代码重复率
4.nonlocal关键字
nonlocal用来声明外部的局部变量 global 用来声明全局变量
b = 100
def outer():
a = 10
def inner():
nonlocal a
print("inner:",a) #声明外部函数的局部变量
b = 20
global b #声明全局变量
b = 1000
inner()
print("outer a:", a)
outer()
print("a:",a)
5LEGB规则
Local-->Enclosed-->Global-->Built in
代码段:
str("")
#str = "global str"
def outer():
#str = "outer"
def inner():
str = "inner"
print(str)
inner()
outer()
6.面向对象编程(将数据和操作数据相关封装)
python支持面向过程、面向对象、函数编程等多种编程范式
1.面向对象和面向过程区别 2.面向过程更加关注的是“程序的逻辑流程”,是一种“执行者”思维,适合编写小规模的程序 3.面向对象更加关注的是“软件中对象之间的关系”,是一种“设计者”思维,适合编写大规模的程序
7.对象的进化
处理数据的方式和逻辑变复杂,进化出了”对象“
8.类的定义
1.代码是用类来组织的,是靠对象实现了,”类“也是对象 2.可以将对象比作一个”蛋糕“,类就是制造蛋糕的”模具“
经典类的操作 :
#经典类的操作
class Student: #类名一般首字母大写,多个单词采用驼峰原则
def __init__(self,name,score): #self必须位于第一个参数
self.name = name
self.score = score
def say_score(self): #self必须位于第一个参数
print("{0}的分数是:{1}".format(self.name,self.score))
s1 = Student("汤小天",90) #通过类名来构造函数
s1.say_score()
9.构造函数__init__()
要点 1.名称固定,必须为:__init__() 2.第一个参数固定,必须为:self。self指的就是刚刚创建好的实例对象。 3.构造函数通常用来初始化实例对象的实例属性 4.通过”类名(参数列表)“来调用构造函数。调用后,将创建好的对象返回给相应的变量 5,__init__()方法:初始创建好的对象,初始化指的是:”给实例属性赋值“ 6.__init__()方法:用于创建对象,但我们一般无需重定义该方法。
10.实例属性
实例属性是从属于实例对象的属性,也称为”实例变量“。