python-变量类型
什么叫变量?变量就是可以重复使用的一个量,或者说是一个代号。
变量的命名规则
1、变量组成:字母+数字+下划线
2、一般以字母(大写,小写均可)开头------>frist1,Second2
3、数字不能开头------>4four,5five会报语法错误
4、大小写敏感,要严格区分大小写------>First != first
5、下划线可以开头,但是强烈不建议使用,一般以下划线开头的内容具有特殊含义
6、不能与关键字相同------>关键字是Python语言里面的特殊字符串
# 查看关键字 import keyword print(keyword.kwlist)
7、不能与内置函数相同------>print
# 内置函数可以作为变量使用,但是该函数会失去原有的意义 >>> print = 3 >>> print 3 >>> print("hello world") Traceback (most recent call last): File "<pyshell#2>", line 1, in <module> print("hello world") TypeError: 'int' object is not callable
8、推荐使用具有固定含义的英文单词或者缩写, srv=server skt=socket
9、中文可作为变量使用,但是强烈不建议
变量赋值
等号(=)用来给变量赋值
等号(=)左边为变量,等号(=)右边为存储在变量中的值
movies = '我不是药神' print(movies) movies = '当幸福来敲门' print(movies) num1 = 3 num2 = 9.2 num3 = num1 + num2
print(num3) name = 'test' room = '508' office = name + room print(office)
输出结果如下:
我不是药神 当幸福来敲门 12.2 test508
多变量赋值
多变量赋值即同时为多个变量进行赋值
# 查看对象的地址:id() # 多个变量指向同一个位置 a = b = c = 13 print(a,b,c,id(a),id(b),id(c)) # 不同变量同时指向不同的对象 a,b,c = 'mon','wed',7 print(a,b,c,id(a),id(b),id(c))
输出结果中可以看出,a = b = c = 13中3个变量都指向同一个内存地址
13 13 13 1596646352 1596646352 1596646352
mon wed 7 55821440 55821536 1596646256
变量类型
python3中有6个标准数据类型:
- 数字(Number)
- 字符串(String)
- 列表(List)
- 元组(Tuple)
- 字典(Dict)
- 集合(Set)
获取类型的方法
- type()
- isinstance()
type()
print(type(520)) print(type(5.20)) list1 = [] print(type(list1)) tuple1 = () print(type(tuple1)) dic = {} print(type(dic))
输出结果如下:
<class 'int'> <class 'float'> <class 'list'> <class 'tuple'> <class 'dict'>
isinstance()
验证()类型是否正确,并返回bool值
isinstance(object, classinfo)
print(isinstance('a',bool)) print(isinstance(520,int)) print(isinstance(3.1415,float)) print(isinstance(['list',1,.5],list)) print(isinstance((2,[3,1.0],'2'),tuple))
输出结果如下:
False
True
True
True
True
数字类型(Num)
数字类型包含4种:
- 整数(int)
- 浮点数(float)
- 布尔值(bool)
- 复数(complex)
整数类型
一般称为整数或者整型,正整数或者负整数
例如:3,-3
浮点数
浮点数就是俗称的小数,正或者负;浮点数也可以用科学记数法表示------>1.3e-3 = 1.3 x 10-3 = 0.0013
浮点数的写法:0.3 == .3 , 3.1415 , 3.
布尔值
布尔值即表示真假的值,即True,False
布尔值可以跟数字直接操作------>True == 1;False == 0
复数
复数由实数部分和虚数部分组成,可以用a + bj,或者complex(a,b)表示, 复数的实部a和虚部b都是浮点型。
例如:5+3j == complex(5,3)
数值类型转换
数据类型的转换,只需将数据类型作为函数名即可
# 浮点型转换为整型 a = 5.99 b = int(a) print(b) # 字符串转换为浮点型 # 字符串转换为整型或者浮点型,字符串内容必须为数字 a = '520' b = float(a) print(b) # 浮点型转换为字符串 a = 5.99 b = str(a) print(b) # e记法转换为字符串 a = 5e19 b = str(a) print(b)
输出结果如下:
5 520.0 5.99 5e+19
运算符
运算符包括以下几种:
- 算术运算符
- 比较或者关系运算符
- 赋值运算符
- 逻辑运算符
- 位运算
- 成员运算
- 身份运算符
算术运算符
# +,-跟正常算术运算符一模一样 a = 8 + 6 - 3 print(a) # 乘号用星号(*)代替 a = 6 * 7 print(a) # 除号用斜杠(/)代替 # 在Python2.x 和python3.x 中,除号(/)结果可能不一致,此处以3系列为准 a = 7 / 4 print(a) # % 取余运算 # 两个数字相除应该有商数有余数 # % 只会得到余数 a = 7 % 4 print(a) # // 表示取商运算,也叫地板除 a = 8 // 3 print(a) # ** 表示幂运算 a = 3 ** 3 print(a)
输出结果如下:
11 42 1.75 3 2 27
比较或者关系运算符
- 对两个变量或者值进行比较的运算符
- 比较的结果是布尔值,即True/False
# == , 等于号 a = 3 ** 4 # 下面语句执行顺序是 # 1、 计算 a == 80 # 2、 把结果放入b中 b = a == 80 print(b) # != 不等于 print( 9 != 8 ) # > 大于 # < 小于 # >= 大于等于 # <= 小于等于
输出结果如下:
False
True
赋值运算符
# = , 赋值 a = 0 A = a = 4 print('A = ',A) # +=, 是缩写 a = 0 a += 7 # a = a+ 7 的缩写 print('a = ',a) # -= b = 0 b -= 2 # b = b - 2 print('b = ',b) # *= c = 2 c *= 2 # c = c * 2 print('c = ',c) # /= d = 2 d /= 2 # d = d / 2 print('d = ',d) # //= e = 9 e //= 4 # e = e // 4 print('e = ',e) # %= f = 5 f %= 2 # f = f % 2 print('f = ',f) # **= g = 3 g **= 3 # g = g ** 3 print('g = ',g)
输出结果如下:
A = 4 a = 7 b = -2 c = 4 d = 1.0 e = 2 f = 1 g = 27
逻辑运算符
对布尔值进行计算的符号
- and 逻辑与
- or 逻辑或
- not 逻辑非
运算规则:
- and看做乘法(*), or看做加法(+),
- True看做1, False看做0
- 则逻辑运算就能转换成整数数学运算
- 最后结果如果是0则为False, 否则为True
# 逻辑运算符案例 a = False b = False c = True # 以下式子等价于 d = 0 * 0 + 1 d = a and b or c print(d) d = a or b and a print(d)
输出结果如下:
True
False
逻辑运算的短路问题:
逻辑运算式,按照运算顺序计算,一旦能够确定整个式子未来的值,则不再进行计算,直接返回
a = True b = False c = False print(a or a and b or c) # 当or的左侧a = True时,则or右侧的表达式不再执行 # or在表达式中优先级最低 print(b and (a or c and b)) # 当and的左侧b = False时,则and右侧的表达式不再执行 # and在表达式中优先级最低 print(not c or a and b) # 优先级:not > and > or # or 左侧not c == True,故a and b不用执行
输出结果如下:
True
False
True
成员运算符
用来检测某一个变量是否是另一个变量的成员,返回值为布尔类型
- in
- not in
list1 = [1,3,5,7,9] a = 7 b = a in list1 print(b) a = 4 print(a in list1) print(a not in list1)
输出结果如下:
True
False
True
身份运算符
比较两个对象的存储单元,返回值为布尔类型
- is
- is not
a = b =9 print( a is b) if id(a) == id(b): print('内存地址一致') else: print('内存地址不同') a = "I love you" b = "i love you" print(a is b) print(a is not b) if id(a) == id(b): print('内存地址一致') else: print('内存地址不同')
输出结果如下:
True
内存地址一致
False
True
内存地址不同
运算符的优先级问题
运算符的优先级参照下图,从上到下,从左到右,优先级递减
参考资料:
1、图灵学院:http://www.tulingxueyuan.com/
2、鱼C论坛:https://fishc.com.cn/forum-243-1.html
3、菜鸟教程:http://www.runoob.com/python3/python3-tutorial.html
4、《 Head First Python 》