类的定义
类定义数据类型的属性和方法
定义类的语法格式:
class 类名:
类体
要点如下:
1. 类名必须符合‘标识符’的规则;一般规定,首字母大写,多个单词使用‘驼峰原则’
2. 类体中我们可以定义属性和方法。
3. 属性用来描述数据,方法(即函数)用来描述这些数据相关的操作
类的定义
类定义数据类型的属性和方法
定义类的语法格式:
class 类名:
类体
要点如下:
1. 类名必须符合‘标识符’的规则;一般规定,首字母大写,多个单词使用‘驼峰原则’
2. 类体中我们可以定义属性和方法。
3. 属性用来描述数据,方法(即函数)用来描述这些数据相关的操作
对象的进化
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.闭包
数据降维
1.特征选择
2.主成分分析
MinMaxScaler(feature_range=())
feature_range 可以指定在一定的数值范围内
tf idf
tf:term frenquency词的频率 出现的次数
idf:inverse document frequency 逆文档频率
log(总文档数量/该词出现的文档数量)
重要性程度
countvectorizer没有参数
文本都是放在列表里面的可迭代对象
性能瓶颈,读取速度
格式不太符合机器学习要求数据的格式
可用数据集:
Kaggle
UCI
scikit-learn
机器学习是从数据中自动分析获得规律(模型),并利用规律对未知数据进行预测
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. **,将多个参数收集到一个'字典'对象中。
强制命名参数
参数的几种类型
位置参数
按照位置传递的参数
默认值参数
为某些参数设置默认值,这些参数传递时可选。
命名参数
按照形参的名称传递参数
传递不可变对象是浅拷贝
浅拷贝和深拷贝
浅拷贝:不拷贝子对象的内容,只拷贝引用
深拷贝:子对象的内存也全部拷贝,子对象修改不影响源对象