一、数据类型
- 对象的三大特征:值、身份、类型;
1)数字 Number
- 整型、浮点型
- 只有 int 和 float 两种类型;
- type(2/2):float 类型;2/2 == 1.0;
- type(2//2):int 类型;2//2 == 1;
- //:整除;
- 进制
- 2/8/16 进制数表示,前缀:ob、0o、0x;
- 十进制数没有前缀;
- 十六进制,A、B、C、D、E、F:分别表示10,11,12,13,14,15;
- bin():将任意进制的数转换成二进制数;
- int():将任意进制的数转换成十进制数;
- oct():将任意进制的数转换成八进制数;
- hex():将任意进制的数转换成十六进制数;
- 布尔类型
- bool():将其它数据类型转换成布尔类型;
- 所有非零的数值,转换成布尔类型都是 True;只有空数据、0 和 None( 0、‘’、[]、{}、()、None) 转换成布尔类型是 False;
- 布尔类型可以直接参与运算:a = 1 + True;int(True) == 1;
- 复数 compler:数字后缀 j (如 10j);
2)序列
- 字符串 str
- 单引号与双引号
- 相同的引号表示字符串的时候必须成对出现;如果引号作为字符出现,不能与表示字符串的引号相同,如:'let's go';可用转义字符代替:'let\'s go';
- 但可以 'let"s go'、"let's go":
- 三引号
- 表示多行字符串;
-
"""hello world\nhello world\nhello world""" 'hello world\nhello world\nhello world' print("""hello world\nhello world\nhello world""") hello world hello world hello world
# 关于专业字符 “\n” 的识别;
- 单引号字符串输入时也可以换行,在换行处加 “\”;
- 转义字符
- 特殊的字符;
- 一般表示无法“看见的字符”、与 python 语法有冲突的字符;
- \n:换行; \r:回车;两者不同;
- 将转义字符变为非转义字符,一般将 “\” 转义为 “\\”;
- 原始字符串
- 在普通字符串前加 “r”,普通字符串中的所有转义字符都被当做两个普通字符看待;
- 字符串运算
- 字符串 + 字符串:'hello' + 'world' ——'hello world';
- 字符串 * 数字:'hello' * 3 —— 'hello hello hello';
- 字符串[字符序号]:切去字符串中的某一字符:'hello'[0] == 'h'、'hello'[-1] == 'o';
- 'hello'[o:4] == 'hell'、'hello'[1:5] == 'ello'、'hello'[1:10] == 'ello'、'hello'[1:] == 'ello'、'hello'[:-1] == 'hell';
- 不能 字符串 * 字符串;
- 列表 list
- 列表中的每一个元素都可以是任意的数据:['hello', 1, [1,2], True, (1,2), {0}];
- 列表中元素的访问方式与字符串操作一样;
- 列表运算与字符串操作一样,但没有减法操作;
- 有序的,元素内容可更改;
- type([1]) —— list;
- 元组 tuple
- 元组中的元素是有序的:(1, 2, 3) != (3, 2, 1);
- 当元组中只有一个元素时,类型是元素本身:type((1)) —— int、type(('hello')) —— str;因为数据的运算优先级高于类型的优先级,如:(1 +1 ) * 2 == 4;但是 type(()) —— tuple,空的元组;
- 定义只有一个元素的元组:(1, );
- 有序的,若元素数据是值类型,不可修改,若元素类型是引用类型,可以修改;
a = (1, 2, 3, [1, 2, 3]) a[3][0] = '1' print(a) # (1, 2, 3, ['1', 2, 3])
- 判断序列中是否含有某个元素
- in:某个元素在序列中;
- not in:某个元素不在序列中;
- 3 in [1, 2, 3, 4, 5] —— True;
- 6 in [1, 2, 3, 4, 5] —— False;
- 3 not in [1, 2, 3, 4, 5] —— False;
- 6 not in [1, 2, 3, 4, 5] —— True;
- len():返回序列元素个数;
- max():返回最大元素;
- min():返回最小元素;
- ord():将字符转换为十进制数;ord('d') —— 100;
- 空格符 == 32;
3)集合 set
- 集合是无序的,不能引索和切片操作;
- 一般访问集合中的元素就是通过判断该元素是否存在该集合中来实现;
- 集合中的元素是不重复的,没有相同的元素;
- 差集:{1, 2, 3, 4, 5} - {3, 4} == {1, 2, 5};
- 交集:{1, 2, 3, 4, 5} & {3, 4} == {3, 4};
- 并集:{1, 2, 3, 4, 5} | {3, 4, 5, 6, 7} == {1, 2, 3, 4, 5, 6, 7};
- type({}) —— dict;
- 定义空集合:set();type(set()) —— set;
4)字典 dict
- 格式:{key1:value1, key2:value2},通过 key 找到 value 数据;
- 字典是无序的,不能引索和切片;
- 字典中不能有相同的 key;
- 通过 key 访问 value 数据:dict[key1, key2];
- key 的类型必须是不可变的,如 Number、str、set,但不能是 list;
- value 的内容可以是任意数据;
- {}:表示空的字典;
5)总结
二、变量与运算符
1)变量名
- 一般用很简单简洁的英文单词表示变量:three_leaf_grass;
- 组成变量名的字符只能是 字母、数字、下划线,且首字符不能是数字;
- 变量名不能与系统保留关键字一样;
- 组成变量名的字符区分大小写;
2)值类型、引用类型
- int、str、tuple:值类型,是不可变的;(如:'hello'[0] = 'w',是不可操作的)
- list、set、dict:引用类型,可以改变;
-
a = 1 b = a a = 3 print(b) # 1 a = [1, 2, 3] b = a a[0] = '1' print(b) # ['1', 2, 3]
- 、、;
- 、、
- id():返回数据的内存地址;
- 当 a = 3 时,内存中又多出了一个数据 3 ;而不是将原来的数据 1 更改为 3 ;
3)运算符
- 算术运算符、赋值运算符、比较(关系)运算符、逻辑运算符、成员运算符(in、not in)、身份运算符(is、is not)、位运算符;
- 赋值运算符:先运算,后赋值(c += 1,等效于 c = c + 1);
- str、list、tuple 进行比较运算时,以其中元素逐个进行比较,直到出现结果为止;
'abcd' > 'adef' # False
- 逻辑运算只操作布尔类型,返回的也是布尔类型;
- 'a' and 'b' —— ‘b’、1 and 2 —— 2、1 or 2 —— 1、[] or [1, 2] —— [1, 2];
- 1 and 2,返回 2:跟计算机的解析顺序有关,当计算机读取到 2 时判断出了结果,就直接返回当前解析出的数据;
- 1 or 2,返回 1:当计算机解析到第一个数据 1 时就已经判断出结果,就直接返回当前解析出的数据 1;
- 非布尔类型的数据进行逻辑运算时,系统会对数据进行转换:非空非数字0为 True、0和空数据为 False;
- not '0' —— False;
- 字典的成员运算是针对 key 值确定的:
a = {'c':1} b = 1 b in a # False b = 'c' b in a # True
- is 和 == 的区别:== 比较的是两个数据的值是否相等,is 比较的是两个数据的身份是否相等(或者理解为:is 是比较两个变量的内存地址是否相等);
a = 1 b = 1.0 a == b # True a is b # False
a = {1, 2, 3} b = {3, 2, 1} a == b # True a is b # False --此处的 a 和 b 变量不是指向同一个内存地址
- 类型判断:isinstance、==;(一般不用 == 进行判断)
a = 'abc' type(a) == str # True isinstance(a, str) # True isinstance(a,(int, float, str)) # True--只要 a 是 (int, float, str) 中的一种类型,返回True;
- 位运算都是把数据当做二进制数进行运算:
- &:按位与;对应为都为 1 时返回 1,否则返回 0;
a = 2 b = 3 a & b # 2
- 对象的三大特征(value、is、type)进行判断,分别用:==、is、isinstance;
三、表达式
- 运算符(operator)和操作数(operand)所构成的序列;
四、流程控制语句
- 条件控制(if else)、循环控制(for)、分支(while);
- input() 函数得到的是 str 类型;
- while:多用于递归;
- for:多用于遍历;
- print(x),默认换行打印;print(x, end=''),不换行打印;
- break:强行跳出当前(内部循环,不包括外部循环)所有循环;
- continue:跳出本次条件的循环,其它条件正常进行;
-
a = list(range(0, 10)) b = a[0:len(a):2] print(b) # [0, 2, 4, 6, 8]
五、包、模块、类
- 导入
- import 只能导入模块,不能导入变量;