python3笔记 5 变量与运算符

5-1 什么是变量

>>> [1,2,3,4,5,6] * 3 + [1,2,3]
[1, 2, 3, 4, 5, 6, 1, 2, 3, 4, 5, 6, 1, 2, 3, 4, 5, 6, 1, 2, 3]
太长了,需要引入变量的概念
变量就是名字

定义一个变量
>>> A = [1,2,3,4,5,6]
>>> print(A)
[1, 2, 3, 4, 5, 6]
= 为赋值符号

上述代码可以改造为
>>> A = [1,2,3,4,5,6]
>>> B = [1,2,3]
>>> A * 3 + B
[1, 2, 3, 4, 5, 6, 1, 2, 3, 4, 5, 6, 1, 2, 3, 4, 5, 6, 1, 2, 3]

写出优质的代码最基本的要求是可读性要强,变量命名需要注意

5-2 变量的命名规则

变量名的首字符不能为数字且只能使用字母、数字、下划线
系统保留关键字不能使用在变量名中
变量名区分大小写
在Python中变量没有类型限制

5-3 值类型与引用类型

>>> a = 1
>>> b = a
>>> a = 3
>>> print(b)
1    //b没有改变

>>> a = [1,2,3,4]
>>> b = a
>>> a[0] = '1'
>>> print(a)
['1', 2, 3, 4]
>>> print(b)
['1', 2, 3, 4]    //b改变了
int和list截然不同,int为值类型,list为引用类型
值类型不可变,引用类型可变。
值类型:int str tuple
引用类型:list set dict

>>> a = 'hello'
>>> a = a + 'python'    //a得到的是新的字符串,不是原来的字符串了
>>> print(a)
hellopython    
利用id()证明
>>> b = 'hello'
>>> id(b)
62915904
>>> b += 'python'
>>> id(b)
62890296    //两次id不同
证明字符串为不可改变的类型
>>> 'python'[0] = 'o'
Traceback (most recent call last):
  File "<pyshell#22>", line 1, in <module>
    'python'[0] = 'o'
TypeError: 'str' object does not support item assignment

5-4 列表的可变与元组的不可变

>>> a = [1,2,3]
>>> id(a)
63873192
>>> a[0] = '1'
>>> id(a)
63873192    //列表的id没有改变

>>> a = (1,2,3)
>>> a[0] = '1'
Traceback (most recent call last):
  File "<pyshell#5>", line 1, in <module>
    a[0] = '1'
TypeError: 'tuple' object does not support item assignment    //元组为值类型,不可更改

追加元素: append()
>>> b = [1,2,3]
>>> b.append(4)
>>> print(b)
[1, 2, 3, 4]    //列表可以追加元素,元组不行
对于元组来说,一旦定义不可改变。
在复杂的项目里协作写代码,涉及到数据调用,用元组可以保证数据的稳定。

二维数组的访问
>>> a = (1,2,3,[1,2,4])
>>> a[2]
3
>>> a[3][2]
4
>>> a[3][2] = '4'    
>>> print(a)
(1, 2, 3, [1, 2, '4'])     //可以实现修改,因为我们改变的是列表不是元组

5-5 运算符号

算术运算符:
+ - * /
// 取整
% 求余数
** 次方
>>> 2**2
4
另外还有赋值运算符:= += *= /= %= **= //=
比较关系运算符:== != > < >= <=
逻辑运算符:and or not
成员运算符:in 和 not in
身份运算符:is 和 is not
位运算符:& | ^ - << >>

5-6 赋值运算符

为了给变量赋值,先做运算再赋值
>>> c = 1
>>> c += 1
>>> print(c)
2        //python中没有自增、自减运算符
赋值运算符最终落实在赋值上

5-7 比较运算符

两个变量之间比较,不仅仅限于数字,字符串、bool都可以比较
关键在于操作完成后返回一个bool值
>>> 1 == 1
True
>>> 1 > 1
False

5-8 不只是数字才能做比较运算

>>> b = 1
>>> b += b >= 1    //b = 1 + True,答案为2
>>> print(b)    
2

字符串关系运算
>>> 'a' > 'b'
False
>>> 'abc' < 'abd'    //每个字符单独做比较
True    

列表、元组等都可以做关系运算
>>> [1,2,3] < [1,3]
True
>>> (1,2) < (2,3,4)
True

5-9 逻辑运算符

主要操作bool类型,且返回类型也为bool类型
and:且
or:或
not:非
>>> True and False
False
>>> True or False
True
>>> not False
True

非bool类型中,
int float中0被认为是False,非0被认为是True
str中空字符串被认为是被认为是False
>>> not '0'    //不是空字符串
False
空列表、元组、字典被认为是False

>>> [1] or []
[1]    //返回结果用非bool值表示
>>> [] or [1]
[1]    //关心返回元素是True还是False

and为True返回后一个值
>>> 1 and 2
2    //读到第二个值才能确定为True所以返回2
>>> 2 and 1
1

or为True返回前一个值
>>> 1 or 2
1    //读第一个值时就已经确定为True了所以返回1

5-10 成员运算符

in 和 not in 是用来判断一个元素是否在一组元素中,返回值是bool类型
>>> a = 1
>>> a in [1,2,3,4,5]
True
>>> b = 6
>>> b in [1,2,3,4,5]
False

字典是对于key:value中的key来操作的
>>> b = 'a'
>>> b in {'c':1}
False
>>> b in {'a':1}
True

5-11 身份运算符

is 和 is not 返回的是bool值,如果两个变量相等,则is返回True。
>>> a = 1
>>> b =1.0
>>> a == b
True    //关系运算符比较值相等
>>> a is b
False    //比较两个变量身份(内存地址)是否相等

5-12 如何判断变量的值、身份、类型

值、身份、类型是对象的三大特征
分别用==、is、isintance()来判断
>>> a = {1,2,3}
>>> b = {2,1,3}
>>> a == b
True    //集合是无序的,值相等
>>> a is b
False
>>> a = (1,2,3)
>>> b = (2,1,3)
>>> a == b
False    //元组是有序的,值不相等
>>> a is b
False

对type的判断
>>> a = 1
>>> type(a) == int
True
或者使用isinstance(判断对象,判断类型)
>>> isinstance(a,str)
False
>>> isinstance(a,(str,int,float))
True

5-13 位运算符

&:按位与
|:按位或
^:按位异或
~:按位取反
<<:左移动
>>:右移动
都是把数字当作二进制数进行运算
>>> a = 2
>>> b = 3
>>> a & b    // 10 与 11 是 10
2

我的个人博客: 点击打开链接

猜你喜欢

转载自blog.csdn.net/qq_36329973/article/details/80952239
今日推荐