由于我本身有 Golang, NodeJS 经验, Python 也写过一些项目, 这里基础语法只快速写一些和其他语言略有不同的习惯.
数据类型
数据类型参考: https://www.geeksforgeeks.org/python-data-types/?ref=lbp
基础数据类型包括:
- 数字(int, float)
- 布尔 bool
- 序列(字符串 str, list
[]
, tuple()
) - map
{k:v}
- set
{}
- binary
类型判断:
type() 判断类型
isinstance() 判断类型是否属于指定类型
id() 判断底层是否是一个目标
hash() 计算哈希值
dir(obj) 查看类型支持的方法
类型转化:
数据类型转换, 参考: https://cloud.tencent.com/developer/article/1945472
- 数字-字符串: int(), float(), bool(), str()
- 数字-字符: chr(), unichr(), ord(), hex(), oct()
- 元组-列表: tuple(), list()
- 字典: dict()
- 集合: set(), frozenset()
输出格式化:
类型格式化符号, 参考: https://python-course.eu/python-tutorial/formatted-output.php
使用 print("字符串" % (变量tuple))
格式化 %[flags][width][.precision]type
d
或i
整型f
浮点c
字符r
或s
字符串
数字 Numeric
参考: https://www.runoob.com/python3/python3-number.html
Int 整型
1000 以下的整型数字, 是不基于引用计数销毁的, 所有 1000 以下数字的变量都指向相同目标
运算有 +
, -
, *
, /
除, //
整除, %
取余, **
求幂(与 pow 函数相同)
除法不判断 0 会有 ZeroDivisionError 问题
整型有无限长度, 限制是电脑支持的上限
Float 浮点
- round(x, dec) 遇到5是奇上偶下
Bool 布尔
与 NodeJS 类似, or 都是懒惰判断
- 1 and 2 => 2 (最后一个值)
- 1 or 0 => 1 (第一个真值或最后一个值)
本质上 True => 1, False => 0
反过来判断为 False 的有 0
, 0.0
, ""
, []
, {}
, ()
Python允许连续判断: a<b<c
, 连续赋值 a=b=c=1
优先级 not > and > or
序列 Sequence
- 链接
+
, 重复*
- 判断子字符串:
in
,not in
- 取下标
[]
- 截取
[:]
- 长度
len()
Str 字符串
参考: https://www.runoob.com/python3/python3-string.html
Unicode 编码的不可变序列
单引号, 双引号, 三引号均可. 三引号可以编写跨行字符串, 注释.
- 拼接:
"_".join(["a","b","c"])
- 分割:
"xx".split(" ")
List 列表 []
参考: https://www.runoob.com/python3/python3-list.html
类型不统一的可变序列
- 增:
L.append(item)
- 删:
del L[id]
或L.remove(v)
- 改:
L[id] = v
- 查:
L[id]
- 排序:
L.sort(reverse=False)
inline正序,sorted(L)
不影响原列表返回排序好的新列表
Tuple 元组 ()
参考: https://www.runoob.com/python3/python3-tuple.html
类型不统一的不可变序列, 只允许查询.
字典 Map
参考: https://www.runoob.com/python3/python3-dictionary.html
字典: {k:v}
结构的无序可变键值对, k 必须是不可变对象(可hash哈希的): str, bool, int, float, tuple.
可以使用 map() 将 [[k,v], ...]
, [(k,v), ...]
, ["kv", ...]
转化为字典
增/改:
d[k] = v
删:
del d[k]
或v = d.pop(k)
查:
d[k]
清空:
d.clear()
, 字典还在变成空字典删除:
del d
, 字典删除不存在了键:
d.keys()
值:
d.values()
键值对:
d.items()
集合 Set
参考: https://www.runoob.com/python3/python3-set.html
集合: {}
无序数据集. 支持交并差补.
可变集合 Set:
增:
s.add(x)
删:
s.remove(x)
不存在报错,s.discard(x)
不存在不报错,s.pop()
随机删除改:
s.update(x, y)
清空:
d.clear()
, 字典还在变成空字典成员关系:
in
,not in
判断元素是否在集合中集合关系:
==
,!=
,>
,>=
,<
,<=
判断是否是子集交集
&
,&=
并且并集
|
,|=
或差集
-
,-=
减补集
^
,^=
异或
不可变集合 FrozenSet: 不能做增删修改操作