Task 01:变量、运算符、数据类型
一、知识点
1变量
-
变量可以是任意数据类型。
-
在Python中,等号
=
是赋值语句,可以把任意数据类型赋值给变量,同一个变量可以反复赋值,而且可以是不同类型的变量,例如:a = 123 # a是整数 print(a) a = 'ABC' # a变为字符串 print(a)
-
变量本身类型不固定的语言称之为动态语言,与之对应的是静态语言。和静态语言相比,动态语言更灵活。
Python是动态语言,Java、C是静态语言。
int a = 123; // a是整数类型变量 a = "ABC"; // 错误:不能把字符串赋给整型变量
-
变量赋值:
对变量赋值
x = y
是把变量x
指向真正的对象,该对象是变量y
所指向的。随后对变量y
的赋值不影响变量x
的指向。例如:a = 'ABC' b = a a = 'XYZ' print(b)#打印出来ABC
最后一行打印出变量
b
的内容到底是'ABC'
呢还是'XYZ'
?如果从数学意义上理解,就会错误地得出b
和a
相同,也应该是'XYZ'
,但实际上b
的值是'ABC'
,让我们一行一行地执行代码,就可以看到到底发生了什么事:执行
a = 'ABC'
,解释器创建了字符串'ABC'
和变量a
,并把a
指向'ABC'
:执行
b = a
,解释器创建了变量b
,并把b
指向a
指向的字符串'ABC'
:执行
a = 'XYZ'
,解释器创建了字符串’XYZ’,并把a
的指向改为'XYZ'
,但b
并没有更改:所以,最后打印变量
b
的结果自然是'ABC'
了。参考:https://www.liaoxuefeng.com/wiki/1016959663602400/1017063826246112
2数据类型
-
在Python中,能够直接处理的数据类型有以下几种:整数、浮点数、字符串、布尔、空值。
-
Python的整数没有大小限制,而某些语言的整数根据其存储长度是有大小限制的,例如Java对32位整数的范围限制在
-2147483648
-2147483647
。Python的浮点数也没有大小限制,但是超出一定范围就直接表示为inf
(无限大)。 -
''
或""
本身只是一种表示方式,不是字符串的一部分,因此,字符串'abc'
只有a
,b
,c
这3个字符。如果'
本身也是一个字符,那就可以用""
括起来,比如"I'm OK"
包含的字符是I
,'
,m
,空格,O
,K
这6个字符。 -
转义字符:
转义字符
\
可以转义很多字符,比如\n
表示换行,\t
表示制表符,字符\
本身也要转义,所以\\
表示的字符就是\
。Python还允许用
r''
表示''
内部的字符串默认不转义。如果字符串内部有很多换行,用
\n
写在一行里不好阅读,为了简化,Python允许用'''...'''
的格式表示多行内容。>>> print('''line1 ... line2 ... line3''') line1 line2 line3
-
空值是Python里一个特殊的值,用
None
表示。None
不能理解为0
,因为0
是有意义的,而None
是一个特殊的空值。
3函数积累
ord()
函数获取字符的整数表示chr()
函数把编码转换为对应的字符
>>> ord('A')
65
>>> ord('中')
20013
>>> chr(66)
'B'
>>> chr(25991)
'文'
二、练习题
-
怎样对python中的代码进行注释?
可以用
#
,也可以用''' '''
或者""" """
。#
用于单行注释,''' '''
或者""" """
可用于单行注释,也可用于多行注释,示例如下:#单行注释 '''单行注释''' """单行注释""" ''' 多行注释,三个单引号 多行注释,三个单引号 多行注释,三个单引号 ''' """ 多行注释,三个双引号 多行注释,三个双引号 多行注释,三个双引号 """
-
python有哪些运算符,这些运算符的优先级是怎样的?
-
有算术运算符、比较运算符、逻辑运算符、位运算符、三元运算符等。
-
在看一个式子的时候,先按照优先级来算,如果遇到优先级相同的,再看结合性。
自己写的时候不要写过于复杂的表达式,也不要过度依赖运算符的优先级(尽量使用小括号来控制运算顺序,增加可读性)。
运算符说明 Python运算符 优先级 结合性 优先级顺序 小括号 ( ) 19 无 高 索引运算符 x[i] 或 x[i1: i2 [:i3]] 18 左 属性访问 x.attribute 17 左 乘方 ** 16 左 按位取反 ~ 15 右 符号运算符 +(正号)、-(负号) 14 右 乘除 *、/、//、% 13 左 加减 +、- 12 左 位移 >>、<< 11 左 按位与 & 10 右 按位异或 ^ 9 左 按位或 | 8 左 比较运算符 ==、!=、>、>=、<、<= 7 左 is 运算符 is、is not 6 左 in 运算符 in、not in 5 左 逻辑非 not 4 右 逻辑与 and 3 左 逻辑或 or 2 左 逗号运算符 exp1, exp2 1 左 低 参考:http://c.biancheng.net/view/2190.html
-
结合性,就是当一个表达式中出现多个优先级相同的运算符时,先执行哪个运算符:先执行左边的叫左结合性,先执行右边的叫右结合性。
例如对于表达式对于
100 / 25 * 16
,/
和*
的优先级相同,应该先执行哪一个呢?这个时候就不能只依赖运算符优先级决定了,还要参考运算符的结合性。/
和*
都具有左结合性,因此先执行左边的除法,再执行右边的乘法,最终结果是 64。Python 中大部分运算符都具有左结合性,也就是从左到右执行;只有单目运算符(例如 not 逻辑非运算符)、赋值运算符和三目运算符例外,它们具有右结合性,也就是从右向左执行。表 1 中列出了所有 Python 运算符的结合性。
-
易错示例:
print(2 ** 3) # 8 print(3 / 4) # 0.75,注意和C区别 print(3 // 4) # 0 print(-3 ** 2) # -9,这题格外要注意 print(3 ** -2) # 0.1111111111111111
-
-
python 中
is
,is not
与==
,!=
的区别是什么?is
,is not
==
,!=
比较两个变量的内存地址 比较两个变量的值 比较的两个变量,指向的地址是不可变的类型,两者等价 比较的两个变量,指向的地址是可变的类型,两者有区别 #比较的两个变量,指向的地址是不可变的类型,两者等价 a = "hello" b = "hello" print(a is b, a == b) # True True print(a is not b, a != b) # False False
#比较的两个变量,指向的地址是可变的类型,两者有区别 a = ["hello"] b = ["hello"] print(a is b, a == b) # False True print(a is not b, a != b) # True False
-
python 中包含哪些数据类型?这些数据类型之间如何转换?
-
Python 3中有六个标准数据类型:
Number(数字)String(字符串)List(列表)Tuple(元组)Set(集合)Dictionary(字典) -
Python 3 的六个标准数据类型中:
不可变(3 个):Number(数字)、String(字符串)、Tuple(元组);
可变(3 个):List(列表)、Dictionary(字典)、Set(集合) -
转换为整型
int(x)
转换为字符串str(object='')
转换为浮点型float(x)
print(int('520')) # 520 print(int(520.52)) # 520 print(float('520.52')) # 520.52 print(float(520)) # 520.0 print(str(10 + 10)) # 20 print(str(10.1 + 5.2)) # 15.3
-