Python的变量与运算符

了解变量与运算符~

变量

什么是变量

我认为是对各种数据的一种命名(便于管理,运算,赋予意义)

变量的命名规则

只能字母,数字,下划线

1
2
>>> 1A =1						//不能以数字开头
SyntaxError: invalid syntax

系统的关键字 不能用在变量名中 保留关键字

1
2
3
4
>>> and = 1
SyntaxError: invalid syntax
>>> if =2
SyntaxError: invalid syntax

不要用函数名做变量(建议)

1
2
3
4
5
6
7
8
>>> type(1)
<class 'int'>
>>> type = 1
>>> type(1)
Traceback (most recent call last):
File "<pyshell#38>", line 1, in <module>
type(1)
TypeError: 'int' object is not callable

值类型与引用类型

值类型:int str tuple (不可变)

1
2
3
4
5
6
7
8
9
10
11
12
>>> a = 1
>>> b = a
>>> a = 3
>>> print(b)
1

>>> a = 1
>>> b = 1
>>> id(a)
1752811184
>>> id(b) //id() 内存地址
1752811184

引用类型:list set dict (可变)

1
2
3
4
5
6
7
8
9
10
11
12
>>> a = [1,2,3]
>>> b = a
>>> a[0] = '10'
>>> print(b)
['10', 2, 3]

>>> a = [1,2,3]
>>> b = [1,2,3]
>>> id(a)
3120947373384
>>> id(b)
3120947373704

列表的可变与元组的不可变

列表 :list (可变)

1
2
3
4
5
6
>>> a = [1,2,3]
>>> id(a)
3120947372936
>>> a[0] = '3'
>>> id(a)
3120947372936

元组:tuple(不可变)

1
2
3
4
5
6
7
8
>>> a = (1,2,3)
>>> id(a)
3120947366000
>>> a[0] = '3'
Traceback (most recent call last):
File "<pyshell#105>", line 1, in <module>
a[0] = '3'
TypeError: 'tuple' object does not support item assignment

有意思的事例

1
2
3
4
>>> a = (1,2,3,[1,2,4])
>>> a[3][1] = '66'
>>> print(a)
(1, 2, 3, [1, '66', 4])

运算符

运算符号

+ - * / //(整除) %(取余) **(平方,立方)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
>>> 'hello '+'world'
'hello world'
>>> [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**5
32

赋值运算符

= += -= *= /= %= **= //=

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
>>> a = 1
>>> a += 1
>>> print(a)
2
>>> a -= 1
>>> print(a)
1
>>> a *= 2
>>> print(a)
2
>>> a /= 4
>>> print(a)
0.5
>>> a %= 1
>>> print(a)
0.5

比较运算符

== != > < >= <=

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
>>> 1 == 1
True
>>> 1 > 1
False
>>> 1 >= 1
True
>>> a = 1
>>> b = 2
>>> a != b
True

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

>>> 1 > 1
False
>>> 2 > 3
False
>>> 'a' > 'b'
False
>>> ord('a')
97
>>> ord('b')
98
>>> 'abc' > 'abd'
False

>>> [1,2,3] < [2,3,4]
True
>>> (1,2,3) < (1,3,2)
True

逻辑运算符

and(且) or(或) not(非)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
>>> 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

int float 0被认为是Flase,非0表示True

1
2
3
4
5
6
7
8
9
10
>>> 1 and 1
1
>>> 'a' and 'b'
'b'
>>> 'a' or 'b'
'a'
>>> not 'a'
False
>>> not True
False

空字符串被认为False,非空表示True

1
2
3
4
>>> not ''
True
>>> not 'gt'
False

空的列表,元组,字典被认为是Flase,非空表示True

1
2
3
4
>>> not []
True
>>> not [1,2]
False

结果的返回(有些绕~需要详解的请留言)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
>>> not 1
False
>>> [1] or []
[1]
>>> [] or [1]
[1]
>>> 'a' and 'b'
'b'
>>> '' and 'b'
''

>>> 1 and 0
0
>>> 0 and 1
0
>>> 1 and 2
2
>>> 2 and 1
1
>>> 0 or 1
1
>>> 1 or 0
1
>>> 1 or 2
1

成员运算符

in not in

列表,元组,字典(key) 都是一样的使用

1
2
3
4
5
6
7
8
9
10
11
>>> a = 1
>>> a in [1,2,3,4,5]
True
>>> b = 6
>>> b in [1,2,3,4,5]
False
>>> b not in [1,2,3,4,5]
True
>>> b = 'h'
>>> b in 'hello'
True

身份运算符

is not is

== 和 is ==比较的是值 is比较的是内存地址

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
>>> a = 1
>>> b = 1
>>> id(a)
1752811184
>>> id(b)
1752811184
>>> a == b
True
>>> a is b
True

>>> a = [1,2,3]
>>> b = [1,2,3]
>>> id(a)
3120947373448
>>> id(b)
3120947374280
>>> a == b
True
>>> a is b
False

值,身份,类型判断

值:== 判断

身份:is 判断

类型:isinstance()

1
2
3
4
5
6
7
8
>>> a = 1
>>> b = 2
>>> a == b
False
>>> a is b
False
>>> isinstance(a,int)
True

位运算符

&(按位与) |(按位或) ^(按位异或) ~(按位取反) <<(左移动) >>(右移动)

把数字当做二进制进行运算

1
2
3
4
5
6
>>> a = 2
>>> b = 3
>>> a & b
2
>>> a | b
3

总结