Python 中的变量不需要声明。每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建。
在 Python 中,变量就是变量,它没有类型,我们所说的"类型"是变量所指的内存中对象的类型。
等号(=)用来给变量赋值。
等号(=)运算符左边是一个变量名,等号(=)运算符右边是存储在变量中的值。
例:
counter = 100 # 整型变量
miles = 1000.0 # 浮点型变量
name = "runoob" # 字符串
print (counter)
print (miles)
print (name)
多个变量赋值:
python中允许同时为多个变量赋值
例:
a=b=c=1
a,b,c=1,2,'test'
标准数据类型:
python中的常见数据类型有:
1.数字(Number)
2.字符串(String)
3.布尔类型(bool,也属于数字类型)
4.列表(List)
5.元组(Tuple)
6.集合(Set)
7.字典(Dictionary)
python中六个标准数据类型中:
不可变数据(3个):Number(数字)、String(字符串)、Tuple(元组);
可变数据(3个):List(列表)、Dictionary(字典)、Set(集合)。
除了这些,还有一些高级的数据类型,如:字节数组类型(bytes)
Number(数字):
数字类型包括int、float、bool、complex(复数)
int是整数类型,值得注意的是,python3中没有long类型,只有int类型
在python中用内置的type()函数,可以获取数据的类型
例如:执行以下代码
a=1
print(type(a))
结果为:
也可以使用 isinstance对数据的类型进行判断
例如:执行以下代码
b=2
print(isinstance(b,int))
print(isinstance(b,float))
结果为:
isinstance 和 type 的区别在于:
isinstance 会认为子类也是父类类型,而type 不认为子类是父类类型
例如:执行以下代码
class A:
pass
class B(A):
pass
print(isinstance(A(),A))
print(isinstance(B(),A))
print(type(A())==A)
print(type(B())==A)
结果为:
可以看到
print(isinstance(B(),A))的结果为True,而print(type(B())==A)的结果为False
注意:Python3 中,bool 是 int 的子类,True 和 False 可以和数字相加, True==1、False==0 会返回 True
在Python中可以用del将变量删除,如果执行以下语句:
var1 = 1
var2 = 10
del var1,var2
print(var1)
会报错:
python中的数值运算包括加法(+)、减法(-)、乘法(*)、除法(/,结果为浮点数;//,结果为整数)、取余运算(%)、乘方运算(**)
执行以下代码:
a=8
b=2.5
c=5
print(a+b)
print(a-b)
print(a*b)
print(a/c)
print(a//c)
print(a%c)
print(a**c)
得到运行结果:
Python 还支持复数,复数由实数部分和虚数部分构成,可以用 a + bj,或者 complex(a,b) 表示, 其中复数的实部 a 和虚部 b 都是浮点型。
字符串(String)
python中的字符串用单引号(')或者双引号(")括起来,同时使用反斜杠(\)来转义特殊字符,如果要截取字符,可以用以下的语法格式啦截取:
字符串[头下标:尾下标],python中的下标方式有两种,从左往右是从0开始,从右往左是从-1开始,下标-1表示字符串的最后一个字符,下标为0表示字符串的第一个字符
python中的字符串可以用‘+’来连接,用‘*‘来复制
反斜杠(\)可以用作续行符,表示下一行是上一行的延续,也可以转义特殊字符,如果不想被转义的话,可以用r来实现\n不转义
python中,没有单独的字符类型,字符就是长度为1的字符串
注意:python中的字符串不能被改变,不能向一个索引位置赋值(这与C语言不同)
执行下面的语句:
str='test1'
print(str[0:-1]) #打印第一个开始到倒数第二个字符
print(str[2:]) #打印第三个开始到最后一个字符
print(str[1:4]) #打印第二个开始到第四个字符
print(str[:4]) #打印第一个开始到第四个字符
print(str+str+'hh') #连接字符串
print(str*2) #复制字符串
str2='test2\ntest3' #换行
print(str2)
str3='test1\
test2\
test3' #续行
print(str3)
str3[0]='a' #此操作不被允许
结果如下:
布尔类型(bool,也属于数字类型)
bool类型即True和False,它们都是python中的关键字,
bool类型可以作为判断条件,用于if语句中
bool类型可以和逻辑运算符配合使用,计算出来的值仍然会是bool类型的数据
bool类型也可以和数值进行运算(bool类型属于int类型),运算时,True会被看做1,False被看做0
bool类型还可以转为其他数据类型,如整数、浮点数和字符串等
执行以下语句:
f1=True
f2=False
print(0<2)
print(1==1)
print(f1 and f2)
print(f1 or f2)
print(not f1)
print(int(f1))
print(float(f1))
print(float(f2))
print(str(f1))
结果如下:
注意: 在 Python 中,所有非零的数字和非空的字符串、列表、元组等数据类型都被视为 True,只有 0、空字符串、空列表、空元组等被视为 False。因此,在进行布尔类型转换时,需要注意数据类型的真假性。
列表(List)
列表是python中使用得最多的数据类型,列表用中括号([])括起来,列表中的元素用逗号(,)隔开,列表的元素可以是多种数据类型,如:数字、字符串、列表(嵌套)
和字符串一样,列表可以被索引、截取(切片),截取后获得新的列表
列表截取的语法格式如下:
字符串[头下标:尾下标:步长],步长可以省略,默认为1,如果它为负数,那么表示逆向读取,它的索引同样有两种方式,从左往右是从0开始,从右往左是从-1开始
同时列表也可以用‘+’来连接,用‘*’来重复
与字符串不同的是,列表中的数据是可以改变的,可以通过向索引位置赋值来改变列表元素的值
执行以下代码:
list1=[1,2.5,True,'test']
print(list1[::2]) #截取整个列表,步长为2
print(list1[1:3]) #截取第2到第三个字符
print(list1[:]) #截取整个列表
print(list1[:-1]) #截取第一个到倒数第二个字符
print(list1[1:]) #截取第二个到最后一个字符
print(list1+list1) #连接两个相同的列表
print(list1*2) #重复列表
list1[0]='test3' #给下标为0的列表元素赋值,改变原来的值
得到结果为:
元组(Tuple)
元组与列表类似,但是它是不可变的,元组的元素不能修改,元组用小括号()括起来,元素之间用逗号,隔开,元组中的元素类型也有多种
与字符串和列表类似,元组也有相同的索引方式,可以切片,可以用加号+连接,用乘号*重复,虽然它和字符串一样不可变,但是它可以包含可变的元素,如列表
值得注意的是,对于包含0个或者1个元素的元组,它有一些特殊的语法规则,对于包含一个元素的元组,要在元素后加一个逗号,
tup1 = () # 空元组
tup2 = (1,) # 一个元素,需要在元素后添加逗号
string、list 和 tuple 都属于 sequence(序列)
集合(Set)
集合是一种无序、可变的数据类型,集合用花括号{}括起来,同一个集合中的元素类型相同,元素不能重复,用逗号,将元素分隔开。
集合可以进行并集、交集、差集等常见的集合操作,由于集合是无序的,所以集合不能被索引和切片。
注意:创建一个空集合不能用{},必须用set(),{}是用来创建一个空字典的,非空集合可以用{}创建
执行以下代码:
set1=set() #创建一个空集合
print(type(set1)) #输出数据类型
dict={} #创建一个空字典
print(type(dict))
set2={'a','b','c','d','e','a','b'}
print(set2) #重复的元素会被自动去掉
set3={'c','d','e','f','g','h'}
print(set2 & set3) #set2与set3的交集
print(set2 - set3) #set2与set3的差集
print(set2 | set3) #set2与set3的并集
print(set2 ^ set3) #set2与set3中不同时存在的集合
结果为:
可以看到,用set()创建空集合时,打印它的数据类型,是set,而使用{}创建时,打印类型是 dict