数学中,我们一般讲“已知数”和“未知数”。 比如 \(x\) 一般表示未知数,\(c\) 一般表示已知数。 这两个符号和数字一样是可以参与运算的。
\[ y = ax + 1 \]
这个时候 \(a\) 可以是常量,表示斜率。
重要
在 Python 中,没有真正的常量。
在 Python 中变量都要有一个名字,这个名字是一组连在一起的字母、数字或者下划线,但是不能以数字开头, 也不能是 Python 中已有的一些关键词。
合法的
model1_tableproperty_price2018Property不合法的
1_model.tableproperty-price2018Property(a)关键词
and as assert break class continue def del elif else except
False finally for from global if import in is lambda None
nonlocal not or pass raise return True try while with yield
| 类型名 | 符号 | 例子 | |
|---|---|---|---|
| 单个变量 | 整数 | int |
1, 2, 3 |
| 浮点数 | float |
1.2, \(1\times 10^{-2}\), 1e-2 | |
| 逻辑 | bool |
True, False |
|
| 一组变量 | 字符串 | str |
“abc”, “hello”, “world” |
| 列表 | list |
[1,2,3], [1,1.1,"1.23"] |
|
| 集合 | set |
{1,2,3} |
|
| 元组 | tuple |
(1,2,3) |
|
| 某种结构 | 字典 | dict |
{'a': 1, 'b': 2} |
| 自定义的 | 日期、复数等,被称为“类” |
只要写一个变量名,然后用 = 给其赋值,就可以创建一个变量
del <变量名> 的方式注释
此处 districts[0] 中的 [0] 是列表索引,从 0 开始。 也就是 0 代表第一个元素,1 代表第 2 个元素……
所有运算都需要使用运算符。 不同类型的变量可以进行的运算是不一样的。
{'jinshui': '金水',
'erqi': '二七',
'huiji': '惠济',
'gaoxin': '高新',
'zhengdong': '郑东',
'gongyi': '巩义'}
如果运算符不能满足计算需求,则可以编写函数。
函数包含三个部分:
return 将结果返回。使用 () 运算符调用函数,将实际用于执行函数的参数一一对应放在 () 中,即按位置传递。
也可以写出参数名赋值
注释
写成函数就可以重复利用上面的过程
也可以分步写地更清晰
数学运算
abs(x) divmod(x, y) max(a, b, c) min(a, b, c) pow(x, a) round(a)
sum([a, b]) all([a, b]) any([a, b])
创建某种类型的变量或转换为某种类型
int(a) float(a) list({a, b}) set([a, b]) dict() str()
列表操作
长度 len([a, b]) 排序 sorted([a, b]) 反转 reversed([a, b])
生成序列 range(start, stop, step) 组合列表 zip([a, b], [c, d])
枚举列表 enumerate([a, b]) 筛选 filter([a, b])
其他
打印值 print() 字符串表示法 repr()
一个函数可以调用另一个函数,将自己的形参传递到另一个函数中。
也可以自己调用自己,称为递归函数。
注意
慎用递归函数,必须设置递归结束条件,否则会无限递归。
*args:捕获一系列按位置传递的参数,并放在名为 args 的元组中。**kwargs:捕获一系列按名称传递的参数,并放在名为 kwargs 的字典中。/:该参数之前的所有参数必须按位置传递。*:该参数之后的所有参数必须按名称传递。在编写网络爬虫时,通常是获取一个列表作为摘要信息,然后再针对列表的每一项爬取其详细信息。 这样的列表可能有很多,但是很多时候不能知道到底有多少。 但是项目的总数是固定的。 比如爬取一个城市的二手房房价,通常网站会告诉我们一共有多少二手房 total,每页显示多少二手房 page_size。 在爬取每一页时,我们需要计算出这一页第一个项目是总项目中的第几个 offset,告诉服务器,然后服务器才会根据 page_size 返回一个新的列表。 因此我们需要写一些辅助函数。
page (从 1 开始) 计算偏移量 offset (从 0 开始)测试数据:
提示
total 整除 page_size 则为能完全显示 page_size 个项目的页数,再判断余数是不是大于 0。如果大于 0,则说明还有多余的项目,页数再+1。page 减去 1,再乘以 page_size,就是当前页面第一个项目在总项目中的顺序(从 0 开始)在爬取二手房房价数据时,每个挂牌销售的二手房的位置通常只精确到小区,且只保留小数点后 6 位。 小区会有一些指标,比如绿化率、容积率、物业费等,是非常重要的。 于是我们需要想办法将住宅本身和其所在小区关联起来。 但是如果通过名字进行关联,有时候会出现两个小区名字比较相似的情况, 也会出现小区名字不匹配的问题。 因此更好的办法是根据空间坐标进行匹配。 这就需要将坐标转化为单个唯一值,便于关联。
提示
计算机中的小数存在一定的误差,原理上就不能表示的非常精确,这被称为浮点误差。 如果直接使用数字本身进行比较,浮点误差容易导致 5 != 5 的情况出现。 所以要按照一定的方法进行转换后再比较。
程序流程控制
if-else)for 和 while)