Python成长记三(变量与运算符)

变量的定义:变量是计算机语言中能储存计算结果或能表示值抽象概念。(没有固定的值,可以改变)
比如:skill = [“暴击”,“惩戒”,“闪现”,“净化”] (注意:变量命名可读性要强,可以用简介的英文单词来表示一个变量)
变量命名规则:
1.由字母、数字、下划线组成(首字母不能是数字)
2.系统关键字不能用在变量名中(保留关键字)
3.区分大小写

4.没有类型限制

例1:
 a=1
 b=a
 a=3
print(b)--->1
例2:
a =[1,2,3,4]
b=a
 print(a)--->['a', 2, 3, 4]

 print(b)---->['a', 2, 3, 4](b的值随着a的值改变)

值类型与引用类型:
1.int、str、tuple --- 值类型(不可改变)

2.list、set、dict --- 引用类型(可变)

证明可变性:
id()函数
作用:用于显现变量在内存中的地址
比如:
a = 'hello'
id(a)--->107156064
a = a + 'python'

id(a)--->61984104

反向证明:尝试改变字符串

"python"[0] = 'm' -->报错

列表的可变和元组的不可变:
列表:
 a = [1,2,3]
 id(a)--->95140280
 hex(id(a))--->'0x5abb9b8'
 a[0] = '1'
 id(a)--->95140280 (地址不变)

  c = [1,2,3]
  c.append(4)

  print(c)---->[1, 2, 3, 4]

元组:
 b = (1,2,3)

 b[0] = '1' ---->报错

 d = (1,2,3)

d.append(4)---->报错


 a= (1,2,3,[1,2,5])(多维元祖)
 访问: a[3][2]--->5
 
 a=(1,2,3,[1,2,['a','b','c']])
 访问:a[3][2][1]--->'b'

改变值:a[2]='3'----报错

 a[3][2] = '3'---->(1, 2, 3, [1, 2, '3'])

运算符:
'hello'+'world' --->'helloworld' (加法操作)
[1,2,3]*3----->[1, 2, 3, 1, 2, 3, 1, 2, 3] (重复操作)
3-1 ---> 2 (减法操作)
3/2 ---> 1.5 (除法操作)
3//2 ---> 1 (取整操作)
5%2 --->1 (求余操作)
2**2 --->4 (求平方)
2**3 --->8 (求立方)

2***5 -->32 

赋值运算符:
c = 1
print(c) ---->1

c = c + 1 <==> c += 1
print(c) --->2

b=2
a=3
b+=a
print(b) -->5
b-=a
print(b) -->2
b*=a

print(b) -->6

比较运算符:
1==1 --->True
1>1 ---> False
1>=1 --->True

1<=1 --->True

a = 1
b = 2

a!=b --->True (不等于)

b=1
b+=b>=1
print(b) --->2 (b = 1 + True)

int(True) --->1

不只是数字才能做比较运算:
'a' > 'b' --->False ((通过字符编码(ascll)判断))
分析:
ord('a')--->97
ord('b')--->98
'abc' < 'abd' -->True (比较规则:把每个字符串中的字母拿出来单独做比较)
[1,2,3] < [2,3,4] -->True (list)

(1,2,3) < (1,3,2) -->True  (tuple)

逻辑运算符:
True and True --->True
True and False --->False
True or True ---> True
True or False --->True
False or False--->False
not False --->True
not True --->False
not not True --->True
1 and 1 --->1 (1会被解释为True,相当于True and True)
'a' and 'b' ---> 'b' (True and True)
'a' or 'b' ---> 'a' (True or True)

not 'a' --->False (not True)

对于int float来说:0被认为是False,非0表示True

字符串:空字符串为False,否则为True
not '' --->True
not '0' --->False
[]: 空列表为False,否则为True
not [] --->True

not [1,2] --> False

tuple、set、dict和list相同
not 1 --->False

not 0 --->True

[1] or [] -->[1] (返回有元素的列表,实则为True,不一定是最后一个)
[] or [1] --->[1]
'a' and 'b' --->'b'
 '' and 'b' --->''

总结:and 和 or 返回规律

1 and 0 --->0
0 and 1 --->0
1 and 2 --->2 (计算机只有知道第二个值才能返回结果)计算机执行顺序
0 or 1 --->1 (1为真,读到0时不能计算表达式结果)
1 or 0 ---->1

1 or 2 ---->1

成员运算符:
基本用法:
a = 1
a in [1,2,3]--->True
a in [5,6,7]---->False

a not in [5,6,7]---->True

b = 'h'
b in 'hello'--->True
b not in (1,2,3,4,5) --->True

b not in {1,2,3,4,5} --->True

字典的成员运算符:(针对key值来操作的)

b = 'a'
b in {'c':1}--->False
b = 1
b in {'c':1}--->False
b = 'c'

b in {'c':1}--->True

身份运算符:
寻找规律:
a =1
b = 2

a is b --->False

a = 1
b = 1

a is b --->True

a = 'hello'
b = 'world'

a is b --->False

c = 'hello'

a is c ---->True

总结:如果两个变量取值相等,则is返回True

is 和 == 的区别:

a =1
b =2

a == b --->False

a = 1
b = 1
a == b --->True

a is b --->True

a =1
b = 1.0
a == b --->True

a is b --->False

总结:关系运算符比较值是否相等,is不是比较值相等。is比较的是两个变量的身份(内存地址)是否相等


not is (是否不等)

a = {1,2,3}
b = {2,1,3}
a == b ---->True (取值是否相等,集合是无序的)
a is b ---->False (比较两个变量地址, id(a)-->93976856;id(b)--->93976736)

c = (1,2,3)
d = (2,1,3)
c == d --->False (有序,故影响取值)

c is d --->False (id不同)

如何判断变量的值、身份与类型
a = {1,2,3}
b = {2,1,3}
a == b --->True (比较值,无序)

a is b ---->False (比较地址)

c = (1,2,3)
d = (2,1,3)
c == d --->False (值)

c is d ---->False (id 身份判断)

类型 通过type判断
a = 'hello'
type(a) == int ---->False
type(a) == str ---->True
isinstance(a,str) --->True
isinstance(a,int) --->False
isinstance(a,(int,str,float))--->True

isinstance(a,(int,float))--->False

对象三个特征:值(value)、身份(id)、类型(type) (python中一切都是对象)

位运算符:
按位与:&
a = 2
b = 3
a&b --->2 
按位或:

a | b --->3

总结:见思维导图


猜你喜欢

转载自blog.csdn.net/q_jimmy/article/details/80275529
今日推荐