Python定义变量时并不需要指定数据类型,但实际使用还是区分不同类型的。比如接口调用的参数,最好在正式业务逻辑前都做数据类型的判断。
基本的数据类型
整数
Python支持任意长度的正负整数,写法和数学中的写法一样且运算永远是精确的,如下40位的整数加法。
>>> 1234567890123456789012345678901234567
1234567890123456789012345678901234567891
浮点数
浮点数也就是小数,可以用数学中的写法,或者用科学计数法。浮点数运算则可能会有四舍五入的误差,如下0.0000099记为9.9e-6,0.95625845/3=0.31875281666666666666666666666667但是在python中丢失了精度。
>>> 9.9e-6+100
100.0000099
>>> 0.95625845/3
0.31875281666666666
布尔值
布尔值只能为True或者Flase(注意:python是区分大小写的),也可以通过运算获取布尔值,常用于条件判断。
>>> true
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'true' is not defined
>>> True
True
>>> false
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'false' is not defined
>>> False
False
>>> 1>2
False
>>> 1>0
True
布尔值可以用and、or、not运算。
- and
与运算,需要所有值都为True才返回True。 - or
或运算,其中一个值为True则返回True。 - not
非运算,True变为False,False变为True。
>>> True and False and True
False
>>> True and True and True
True
>>> True or False or False
True
>>> False or False or False
False
>>> not True
False
>>> not False
True
字符串
字符串是以单引号’或双引号”括起来的任意文本。
>>> "hello s"
'hello s'
>>> 'hello s'
'hello s'
字符串中有特殊字符时,可以使用转义字符“\”来标识,如果不想转义字符串中的“\”,使用r”表示”内部的字符串默认不转义。\n为换行标识,也可以使用”’ ”’括起来换行。
>>> print(" I'm zhangsan")
I'm zhangsan
>>> print(' I'm zhangsan')
File "<stdin>", line 1
print(' I'm zhangsan')
^
SyntaxError: invalid syntax
>>> print(' I\'m zhangsan')
I'm zhangsan
>>> print(' I\'m zhangsan\nWath\'s your name?')
I'm zhangsan
Wath's your name?
>>> print(r"hello \n")
hello \n
>>> print('''hello
... tom''')
hello
tom
空值
空值用None表示。None不能认为是0或者”,而是一个特殊的值。(类似于Java中的null)
列表
列表分为有序的动态列表list、和初始化后不可修改的元组tuple。
- list
list是一种有序的集合,可以动态添加和删除其中的元素。用中括号[]定义。
>>> mylist = []
>>> mylist
[]
>>> mylist = ['a','b','c','d','e']
>>> mylist
['a', 'b', 'c', 'd', 'e']
list用索引访问每一个位置的元素,索引是从0开始,-1表示最后一个位置。
>>> mylist = ['a','b','c','d','e']
>>> mylist[0]
'a'
>>> mylist[1]
'b'
>>> mylist[-1]
'e'
可使用函数len()获取list元素个数。
>>> mylist = ['a','b','c','d','e']
>>> len(mylist)
5
使用list自带的函数append、insert和extend添加元素。append是添加到末尾,insert可以添加到指定位置,extend将一个list添加到另一个list末尾。
>>> mylist = ['a','b','c','d','e']
>>> mylist.append('f')
>>>mylist
['a', 'b', 'c', 'd', 'e', 'f']
>>> mylist.insert(1,'1')
>>>mylist
['a','1', 'b', 'c', 'd', 'e', 'f']
删除list中元素有三种方式:pop、remove、del
pop()为list自带函数,返回值为删除的元素,不加参数默认为删除最后一个。
remove()也为list自带参数,删除某一个值,如果list中有多个,都会删除。
公共函数del(),可以删除list中指定位置的值。
>>> mylist = ['a','b','c','d','e']
>>> mylist.pop()
'e'
>>> mylist
['a', 'b', 'c', 'd']
>>> mylist.pop(1)
'b'
>>> mylist
['a', 'c', 'd']
>>> mylist.remove('a')
>>> mylist
['c', 'd']
>>> mylist.remove(0)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: list.remove(x): x not in list
>>> del(mylist[1])
>>> mylist
['c']
list中的元素可以为不同类型,也可以为另一个list作为元素。
>>> mylist = [1,'a',2]
>>> mylist
[1, 'a', 2]
>>> mylist.append(['3',4])
>>> mylist
[1, 'a', 2, ['3', 4]]
>>> mylist[3][1]
4
- tuple
元组tuple是另外一种有序的集合,和list相似,不过初始化后就不能修改。用括号()定义。
一个元素的元组定义需要在后面加“,”以消除和数字(1)=1的歧义。
>>> t = ()
>>> t
()
>>> t = (1)
>>> t
1
>>> t = (1,)
>>> t
(1,)
>>> t = (1,2,3)
>>> t
(1, 2, 3)
元组中元素也是用索引访问,并且当中的元素是不可变的。
>>> t = (1,2,3)
>>> t[0]
1
>>> t[0]=4
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'tuple' object does not support item assignment
字典
dict
dict(dictionary),类似java中的map,使用键-值(key-value)对的方式存储。使用大括号{}定义。
>>> d = {}
>>> d
{}
>>> d = {"a":None,"b":0,"c":"abc"}
>>> d
{'a': None, 'b': 0, 'c': 'abc'}
{}
dict使用[key值]访问元素,如果key不存在会报错,可以使用in判断key是否在dict中存在,如果存在再去取。
>>> d = {"a":None,"b":0,"c":"abc"}
>>> d["a"]
>>> d["b"]
0
>>> d["d"]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyError: 'd'
>>> 'a' in d
True
>>> 'd' in d
False
>>>
也可以使用get()函数获取元素,如果key不存在会返回None
>>> d = {"a":None,"b":0,"c":"abc"}
>>> d.get("b")
0
>>> d.get("d")
>>>
dict添加元素,可以直接赋值。
>>> d
{}
>>> d['a']='abc'
>>> d
{'a': 'abc'}
dict删除元素有三种方法
- pop
pop函数,必须带key值,删除指定的键值对。 - del
del函数,删除dict中某个值。 - clear
clear函数,清空dict。
>>> d.pop('a')
>>> d
{'b': 0, 'c': 'abc'}
>>> del(d['b'])
>>> d
{'c': 'abc'}
>>> d.clear()
>>> d
{}
dict与list比较,查询和插入速度快,但是占用内存比较大。
Set
set和dict类似,也是一组key的集合,值不能重复。使用set()定义,传入一个list参数。
插入重复值时只会覆盖,使用add函数添加元素,remove函数删除元素。
>>> s = set(['a','a','b'])
>>> s
{'a', 'b'}
>>> s.add(3)
>>> s
{3, 'a', 'b'}
>>> s.remove('a')
>>> s
{3, 'b'}