对象的进化
1. 简单数据
类似30,40,50.5这样的数字
2. 数组
同类型的数据放在一起。
3. 结构体
不同类型的数据放在一起,C语言中的数据结构。
4. 对象
将不同类型的数据、方法(函数)放到一起。
用class方法
对象的进化
1. 简单数据
类似30,40,50.5这样的数字
2. 数组
同类型的数据放在一起。
3. 结构体
不同类型的数据放在一起,C语言中的数据结构。
4. 对象
将不同类型的数据、方法(函数)放到一起。
用class方法
面向对象
面向对象编程将数据和操作数据的方法封装到对象中,组织代码和数据的方式更接近人的思维。
python支持面向过程、面向对象,函数式编程等
面向过程POP
面对过程更加关注流程,按照步骤实现。适合小规模程序。
面向对象OOP
关注对象之间的关系,适合编写大规模程序。
先找名词,再找动词
LEGB规则
python查找名称时,按照LEGB规则查询
Local 函数或者类的方法内部
Enclosed 嵌套函数,闭包
Global 全局变量
Built in Python为自己保留的特殊名称
def outer():
str="outer"
def inner()
str="inner"
print(str)
pass
inner()
outer()
global声明全部变量
nonlocal申明外部函数的局部变量
嵌套函数(内部函数)
嵌套函数:
在函数内部定义的函数
1.封装-数据隐藏
2.避免函数内部重复代码
3.闭包
递归函数阶乘计算
def factorial(n):
if n ==1:
return 1
else:
return n*factorial(n-1)
result = factorial(5)
print(5)
递归函数
递归函数,类似于数学归纳法。
每个递归函数必须包含两个部分:
1.终止条件
2.递归步骤
栈先进后出
eval()函数
执行一个字符串
eval(source[,globals[,locals]])
globals:可选,必须是字典
locals:可选,任意映射对象
lambda表达式
lambda表达式可以用来声明匿名函数。只允许包含一个表达式,不能包括复杂语句。该表达式的计算结果就是函数的返回值。
lambda 形参1,形参2,形参3: <表达式>
运算结果是表达式的运算结果
f= lambda a,b,c:a+b+c
print(f(2,3,4))
可变参数
可变数量的参数
1. *,将多个参数收集到一个'元组'对象中。
2. **,将多个参数收集到一个'字典'对象中。
强制命名参数
参数的几种类型
位置参数
按照位置传递的参数
默认值参数
为某些参数设置默认值,这些参数传递时可选。
命名参数
按照形参的名称传递参数
传递不可变对象是浅拷贝
浅拷贝和深拷贝
浅拷贝:不拷贝子对象的内容,只拷贝引用
深拷贝:子对象的内存也全部拷贝,子对象修改不影响源对象
参数的传递
从实参到形参的赋值,引用传递。
1.可变对象,直接作用于原对象本身
2.不可变对象,生出新的对象空间
可变对象有:字典、列表、集合、自定义对象等
不可变对象:数字、字符串、元组、function等
函数也是对象,内存底层分析。
文档字符串
help(函数名._doc_)打印函数的文档字符串
费马定理
sympy 符号计算
极限