Python基础01:数据类型、运算符
数据类型
- Python的数据类型不需要声明,每个变量在使用前都必须赋值,变量赋值后才会被创建。
- Python中变量就是变量,没有类型,说的类型都是变量所指的内存中对象的类型。
- Python变量赋值用等号(=),左边是变量名,右边是储存在变量中的值。并且,允许同时为多个变量赋值,如下两种方式:
三个变量被赋予相同的值
a = b = c = 1
多个对象指定多个变量(下例中两个整型对象1和2分配给变量a和b,字符串对象"python"分配给c)
a,b,c = 1,2,"python"
- Python3中有六个标准数据类型:
Number(数字)String(字符串)List(列表)Tuple(元组)Set(集合)Dictionary(字典)
Python3 的六个标准数据类型中:
不可变数据(3 个):Number(数字)、String(字符串)、Tuple(元组);
可变数据(3 个):List(列表)、Dictionary(字典)、Set(集合)。
Number(数字)
- Python3支持int float bool complex(复数)
- 注意与Python2区别:Python3没有Long而Python2里有;Python3里有bool而Python2里没有。在 Python2 中是没有布尔型的,它用数字 0 表示 False,用 1 表示 True。到 Python3 中,把 True 和 False 定义成关键字了,但它们的值还是 1 和 0,它们可以和数字相加。
- 查询变量所指的对象类型:type()函数、isinstance()函数都可以。
isinstance 和 type 的区别在于:
type()不会认为子类是一种父类类型。
isinstance()会认为子类是一种父类类型。
(存疑:子类、父类)
用例如下:
>>> a,b,c,d = 12,True,1+2j,2.123
>>> print(type(a),type(b),type(c),type(d))
<class 'int'> <class 'bool'> <class 'complex'> <class 'float'>
>>> isinstance(c,complex)
True
- 删除变量:del语句,语法:
(存疑:可以删除一些对象引用?)
del var #删除单个变量
del var1,var2 #删除多个变量
String(字符串)
- 用单引号(’)或双引号(")括起来;
- 加号(+)是字符串连接符;
- 星号(*)表示复制当前字符串;
- 反斜杠(\)1、可以转义特殊字符,例如换行(\n);如果不想让反斜杠转义,可以在字符串前边加上r,表示原始字符串;2、可以作为续行符,表示下一行是上一行的延续;
>>> print('Ru\noob')
Ru
oob
>>> print(r'Ru\noob')
Ru\noob
- “”"…""" 或者 ‘’’…’’'也可跨越多行;
- Python没有单独的字符类型,一个字符就是一个长度为1的字符串;
- Python的字符串不能被改变,向一个索引的位置赋值,会发生错误;
>>>word = 'Python'
>>> print(word[0], word[5])
P n
>>> print(word[-1], word[-6])
n P
>>>word[0] = 'm' #错误!不能改变,不能给索引的位置复制
- Python中的字符串有两种索引方式,从左往右以0开始,从右往左以-1开始;
截取的语法:变量[头下标:尾下标]
示例如下:
str = 'Runoob'
print (str) # 输出字符串Runoob
print (str[0:-1]) # 输出第一个到倒数第二个的所有字符Runoo
print (str[0]) # 输出字符串第一个字符R
print (str[2:5]) # 输出从第三个开始到第五个的字符noo
print (str[2:]) # 输出从第三个开始的后的所有字符noob
print (str * 2) # 输出字符串两次RunoobRunoob
print (str + "TEST") # 连接字符串RunoobTEST
(存疑:“print (str[2:5]) # 输出从第三个开始到第五个的字符”为什么不是输出noob,而是noo?)
(存疑:什么是截取,与索引有什么不同?)