基础语法
向屏幕输出print()
print('hello world')
hello world
基础数据类型
整型 int
1111111111235456 1111111111235456 type(1111111111235456) print() <class 'int'> # 在python3中已经删除长整型 |
浮点型 float
1.5 1.5 type(1.5) <class 'float'> 运算(整型、浮点型)示例: 1 + 1 2 3.0 - 1 2.0 # 在python3中,运算之后的结果,首先默认会向参加运算的复杂类型靠拢(整型 - 浮点型 = 浮点型) 5 / 2 2.5 # 在python3中,除法的结果会自动向浮点型靠拢(python2不是,结果会是2) |
复数 complex
2 + 3j (2+3j) type (2+3j) <class 'complex'> # 复数虚部结尾一般以大J或小j结尾 aa=123-12j print (aa.real) 123.0 print (aa.imag) -12.0 |
布尔型 bool
True True False False type (True) <class 'bool'> # True(非0,非空) False(0) # bool值做计算时,True为1 False为0 True + True 2 False + False 0 True + False 1 # 注意:true不是bool true Traceback (most recent call last): File "<stdin>", line 1, in <module> NameError: name 'true' is not defined |
字符串 str
# 单引号 ' abc ' ' abc ' type (' abc ') <class 'str'> type(str) <class 'type'> # 双引号 "abc" 'abc' # 3个单引号 '''abc''' 'abc' # 3个双引号(可以换行来写) """abc """ 'abc\n' 'Po say: "today is a good weather"' 'Po say: "today is a good weather"' # 斜杠可以避免转义 'Po say: \"today is a good weather\"' 'Po say: "today is a good weather"' # 加r也可以避免转义 ,但是要注意 这里斜杠不能写到字符串的结尾 r"C:\a" 'C:\\a' # 声明变量 mystr = 'abc' mystr 'abc' |
字符串-索引
# 从左向右访问:索引从0开始 mystr[0] 'a' mystr[1] 'b' mystr[2] 'c' mystr[3] Traceback (most recent call last): File "<stdin>", line 1, in <module> IndexError: string index out of range # 访问到字符串的位置 大于了他最大的索引值上限 # 从右向左访问:索引从-1开始 mystr[-1] 'c' mystr[-2] 'b' mystr[-3] 'a' mystr[-4] Traceback (most recent call last): File "<stdin>", line 1, in <module> IndexError: string index out of range |
字符串-切片
# 切片操作,是左闭右开的,结束索引的值不会被取到 mystr = 'abcdefg' mystr[:] 'abcdefg' mystr[1:3] 'bc' mystr[1:4] 'bcd' mystr[-5:] 'cdefg' mystr[:4] 'abcd' # 字符串相加,代表拼接 mystr1='1234567' mystr + mystr1 'abcdefg1234567' # 字符串相乘,代表叠加 newstr = mystr * 3 newstr 'abcdefgabcdefgabcdefg' |
列表 list
mylist = [1,2,3,4] type(mylist) <type 'list'> # 列表可以存储各种各样的数据 mylist = [1,2,3,4,'a','b','c',[1,2,3]] # 列表支持索引、切片 mylist[1] 2 mylist[3:6] [4, 'a', 'b'] mylist[-5:-2] [4, 'a', 'b'] mylist[-1][1] 2 # 练习:单独取出以下列表中的a mylist = [1,2,3,[1,[2,3,4,[3,2,[4,'a'],2]],3],'b'] mylist[-2][-2][-1][-2][-1] 'a' mylist[3][1][3][2][1] 'a' # 列表的值是可变的 mylist[0] = 'a' mylist ['a', 2, 3, [1, [2, 3, 4, [3, 2, [4, 'a'], 2]], 3], 'b'] # 字符串的值是不可变的 mystr 'abcdefg' mystr[0] 'a' mystr[0] = '1' Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: 'str' object does not support item assignment # 验证列表内存地址指向的值是可变的,字符和整形是不可变的 mylist = [1,2,3,4,5] id(mylist) 140452016060464 mylist[0] = 'a' mylist ['a', 2, 3, 4, 5] id(mylist) 140452016060464 a = 1 id(a) 9330880 a = 2 id(a) 9330912 #列表可拼接(+) mylist + mylist ['a', 2, 3, 4, 5, 'a', 2, 3, 4, 5] # 列表可叠加(*) mylist * 3 ['a', 2, 3, 4, 5, 'a', 2, 3, 4, 5, 'a', 2, 3, 4, 5] |
元组tuple
mytuple = (1,2,3,4,5,[1,2,3],('a','b')) type(mytuple) <class 'tuple'> # 支持索引和切片 mytuple[0] 1 mytuple[-1] ('a', 'b') mytuple[:] (1, 2, 3, 4, 5, [1, 2, 3], ('a', 'b')) # 元组是不可修改的 mytuple[0] ='a' Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: 'tuple' object does not support item assignment # 元组可拼接(+) mytuple + mytuple (1, 2, 3, 4, 5, [1, 2, 3], ('a', 'b'), 1, 2, 3, 4, 5, [1, 2, 3], ('a', 'b')) # 元组可叠加(*) mytuple * 3 (1, 2, 3, 4, 5, [1, 2, 3], ('a', 'b'), 1, 2, 3, 4, 5, [1, 2, 3], ('a', 'b'), 1, 2, 3, 4, 5, [1, 2, 3], ('a', 'b')) # 类型转换 列表->元组 mylist ['a', 2, 3, 4, 5] tuple(mylist) ('a', 2, 3, 4, 5) tuple(mylist) + mytuple ('a', 2, 3, 4, 5, 1, 2, 3, 4, 5, [1, 2, 3], ('a', 'b')) # 删除误用关键字定义的变量 tuple = 1 tuple 1 tuple() Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: 'int' object is not callable # del用来删除定义的变量 del tuple tuple() () |
变量
- Python中的变量不需要先定义,可以直接赋值使用(要想使用必须先赋值)
- 命名风格,不能和系统函数和关键字重名,也不要和模块名相同
- 变量名大小写是敏感的,变量名只能是字母、数字、下划线,数字不能打头
可以同给给多个变量赋值
a,b = 1,2 a 1 b 2
变量的引用计数

a = 1 b = a id(a) 9330880 id(b) 9330880 a = 'abc' b = a id(a) 140160997615408 id(b) 140160997615408 # 查看引用计数(除了a,b外,还有22个在用 python解析器在用) import sys sys.getrefcount(a) 24 sys.getrefcount(b) 24 del b sys.getrefcount(a) 23 # 引用计数为0时,这块内存被回收
总结
- 可变/可修改内部值:list
- 不可变/不可修改内部值:number、str、tuple
- 不能做切片索引:number
- 能切片索引:str、list、tuple
- 元组和列表的区别,就是在于能否修改其内部的元素