基础知识
-
编码:默认情况下,源码文件以 UTF-8 编码,所有字符串都是 unicode 字符串
-
标识符
- 第一个字符必须以字母
a-z,A-Z或下划线_ - 其他的部分由字母、数字和下划线组成
- 大小写敏感
- 第一个字符必须以字母
-
注释:单行注释以
#开头,多行注释可以用'''和""" -
行与缩进:使用缩进来表示代码块,缩进的空格数是可变的,但是同一个代码块的语句用相同的缩进空格数
-
解释器:有 CPython、IPython、Jython、PyPy 等
- CPython 是用 C 语言开发的官方标准实现解释器,拥有良好的生态,应用最广泛
- IPython 是在 CPython 的基础上在交互式方面得到增强的解释器
- Jython 是为 Java 平台设计的解释器,把 Python 代码编译成 Java 字节码执行
- PyPy 是一种快速、兼容的替代实现,以速度快著称
基本数据类型
标准数据类型
6 种标准数据类型,3个不可变 Number、String、Tuple,3个可变 List、Set、Dictionary
Number
- int、float、bool、complex(复数)
- 指定一个值时,Number 对象就会被创建,用
del删除对象引用
运算符
- / 返回一个浮点数,// 返回一个整数(向下取整)
x**y:返回 x 的 y 次幂- 逻辑运算符:
and、or、not
bool
bool 是 int 的子类,因此布尔值可以被看作整数来使用
- 用
bool()能将其他类型的值转换为布尔值,只有 0、空字符串、空列表、空元组等被视为 False,其他都为 True
String
字符串用单引号'或双引号"括起来
- 字符串不可变
- 没有单独的字符类型,一个字符就是长度为 1 的字符串
- 字符串切片左闭右开
str[start:end],可以加上步长参数str[start🔚step] - 三引号
'''或"""可以指定一个多行字符串 - 用
+运算符连接,用*运算符重复 - 用反斜杠
\转义特殊字符,用r(即raw)可以让反斜杠不发生转义。 如r"this is a line with \n",\n会显示
内建函数
| 函数 | 描述 |
|---|---|
| count(str, beg= 0,end=len(string)) | 返回 str 在 string 里面出现的次数 |
| find(str, beg=0, end=len(string)) | 检测 str 是否包含在字符串中,如果包含返回开始的索引值,否则返回-1;rfind反向 |
| join(seq) | 以指定字符串作为分隔符,将 seq 中所有的元素合并为一个新的字符串 |
| len(string) | 返回字符串长度 |
| lower() | 转换字符串中所有大写字符为小写 |
| lstrip() | 截掉字符串左边的空格或指定字符;rstrip()反向;strip()双向 |
| replace(old, new [, max]) | 将字符串中的 old 替换成 new,可选替换 max 次 |
| rjust(width,[, fillchar]) | 返回一个原字符串右对齐,并使用fillchar(默认空格)填充至长度 width 的新字符串;ljust()反向;zfill()右对齐填充0 |
| split(str="", num=string.count(str)) | 以 str 为分隔符截取字符串,如果 num 有指定值,则仅截取 num+1 个子字符串 |
Turple
元组写在圆括号 () 之间,元素不可变,能被索引和切片
List
列表写在方括号 [] 之间,元素可变,能被索引和切片
- 列表对
+和*的操作符与字符串相似。+号用于组合列表,*号用于重复列表 - 列表比较需要引入 operator 模块的 eq 方法
|
|
函数和方法
| 函数和方法 | 描述 |
|---|---|
| len(list) | 列表元素个数 |
| list.insert(index, obj) | 将对象插入列表的指定位置 |
| list.append(obj) | 在列表末尾添加新的对象 |
| list.extend(seq) | 在列表末尾追加另一个序列中的多个值 |
| list.pop([index=-1]) | 移除列表中的元素并返回该元素的值,默认最后一个 |
| list.remove(obj) | 移除列表中某个值的第一个匹配项 |
| max(list)、min(list) | 返回列表元素最大值/最小值 |
| list.sort(key=None, reverse=False) | 对原列表进行排序,如果指定参数,则使用比较函数指定的比较函数 |
| list.index(obj) | 从列表中找出某个值第一个匹配项的索引位置 |
| list.count(obj) | 统计某个元素在列表中出现的次数 |
| list.reverse() | 翻转列表 |
| list.clear() | 清空列表 |
| list.copy() | 复制列表 |
| list(seq) | 将序列转为列表 |
用比较函数指定按列表中每个元素的第二个元素值排序
|
|
用 del 语句可以从列表中删除一个切割
Set
集合写在花括号 {} 之间,元素可变,无序,不能被索引和切片,元素不重复
注意:创建空集合必须用
set(),不能用{},因为{}创建的是一个空字典
|
|
内置方法
| 方法 | 描述 |
|---|---|
| add() | 为集合添加元素 |
| update() | 给集合添加元素或集合 |
| discard() | 删除集合中指定的元素 |
| intersection() | 返回集合的交集 |
| union() | 返回两个集合的并集 |
| difference() | 返回多个集合的差集 |
| issubset() | 判断指定集合是否为该方法参数集合的子集。 |
| len() | 计算集合元素个数 |
Dictionary
字典写在花括号 {} 之间,元素可变,有序,是key-value形式,key不可变且唯一
|
|
构造函数 dict() 可以直接从键值对序列中构建字典
内置方法
| 方法 | 描述 |
|---|---|
| key in dict | 如果键在字典dict里返回true,否则返回false |
| dict.get(key, default=None) | 返回指定键的值,如果不存在,则返回 default 设置的默认值 |
| dict.setdefault(key, default=None) | 返回指定键的值,如果不存在,则添加键并将值设为default |
| dict.update(dict2) | 把字典dict2的键/值对更新到dict里 |
| dict.pop(key[,default]) | 删除指定键,返回被删除的值 |
bytes类型
bytes 类型表示的是不可变的二进制序列,与 String 类型不同的是,bytes 类型中的元素是整数值(0 到 255 之间的整数),而不是 Unicode 字符
|
|
对于内置类型,用数据类型作为函数名即可进行转换
| 函数 | 描述 |
|---|---|
| int(x,base) | 将 x 转为整数,base 是 x 的进制 |
| bin(x) | 将整数转为二进制字符串 |
| oct(x) | 将整数转为八进制字符串 |
| hex(x) | 将整数转为十六进制字符串 |
| ord(x) | 将字符转为对应 Unicode 码点 |
| chr(x) | 将 Unicode 码点转为对应字符 |
遍历
|
|
条件控制
Python 中用 elif 代替了 else if,所以 if 语句的关键字为:if – elif – else
|
|
循环语句
for 循环可以遍历任何可迭代对象
|
|
while 语句的一般形式:
|
|
函数
Python 定义函数使用 def 关键字,一般格式如下:
|
|
支持多返回值
参数传递
-
不可变类型:值传递,传递的只是值,函数内的修改不影响对象本身
-
可变类型:引用传递,传递的是对象本身,函数内修改后外部的对象也会受影响