在python中,变量就可简单理解为 一组数据的一个名字
“ = ” 是赋值符号,用于给变量赋值的
优质的代码可读性是很强的,所以给变量取名字,一定是要有意义的,让别人看到名字就能马上知道变量表示的是什么。推荐用简短的英文单词来表示一个变量,不建议用汉语拼音来表示,推荐用一些地道的英文,不知道的多查一些英文字典。
变量命名只能是 字母、数字、下划线 组成,但是不能以数字开头。(除了下划线不能包含其他的符号!)
(系统关键字)保留关键字 不能用在变量名中。type不是保留关键字,但是最好不要用于变量名。
python变量名是区分大小写的。
python里的变量是没有类型限制的。(但是在其它一些语言中不是的:例如int a之后,变量a就只能赋值成整型)
下面看一个例子:
思考:为什么同样是改变了a的值,但是b的变化却不一样呢?
总结:
引用类型 是可改变的————包括 list、 set、 dict
值类型本身 是不可变的:要改变只能重新生成一个新的————包括 int 、str、 tuple
>>> a = ' hello '
>>> a = a + 'python'
>>> print(a)
hellopython
注:虽然字符串是不可变的,但是 a+'python' 实际上是指向了一个新的字符串了!!!
>>>'python'[0]
'p'
>>> 'python'[0] = 'o'
————————会报错
因为这里就是我们说的字符串是不可变的
上一小节说到的可变性,实际上可以理解为改变了值,不会改变它的内存地址。
建议:能够用元组表示列表时,就尽量用元组,因为在分工合作的复杂编程项目中,它的不可改变性可以避免一些隐藏的错误,可以保持代码的稳定性
多维元组:
>>> a = (1,2,3,[1,2,['a','b']])
>>> a[3][2][1]
'b'
>>> a[3][2]='4' ————————不会报错,这样是可以修改的,因为我们实际上改变的是列表。
>>> a[2]————————会报错,不可以这样修改。
注:在python中,是不存在变量的定义的,最好说 “ 把…赋值给变量… ”,因为Python中变量就是一个名字。
C += 1 等价于 C=C+1——————在Python中不存在 c++ 或 c - -
其他的赋值运算符类似,不一 一列举了。
比较————不只是比较数字,也可以是布尔类型,字符串。
1)思考题:
>>> b=1
>>> int (True)
1
>>> b+=b>=1
>>> print(b)
?
b 的结果应该是2,因为 b>=1 为True,所以 b += b >=1 等价于 b = b+True 。
2)哪些可以比较不需要死记硬背,遇到的时候就可以去翻一翻手册或者自己运行一下 ,这样的方法更好。
操作类型 和 返回结果 都是布尔类型。
and (且/与),or(或) ,not(非)
重要:
0 被认为是 False,非0 被认为是True
空字符串——False ,非空字符串——True
>>> not ' '
————True
空的列表——False,非空列表——True
>>> not []
————True
[1] or []
[1]
————并不直接显示 True 或 False,但并不意味着 返回结果不是布尔类型。因为这些返回结果 也是被认为是 布尔类型。
>>> 1 and 0
0
>>> 0 and 1
0
>>> 1 and 2
2
>>> 2 and 1
1
————————对于and 运算 :两个值都要看,也就是说计算机还需要知道第二个值才能判断到底该返回什么,两个值都为真时,会返回第二个值
>>> 0 or 1
1
>>> 1 or 0
1
>>> 1 or 2
1
————————对于 or 运算:第一个值为真时,整个结果就为真,不需要再看第二个值了,会直接返回第一个值
in ,not in——————用于 判断一个元素 是否 在/不在 另外的一组元素里。
返回结果是布尔类型。
例子:
>>> a = 1
>>> a in [1,2,3]
True
>>> b = 'h'
>>> b in 'hello'
True
判断是否在 元组、列表、集合、字符串 都可以
在字典中,成员运算 是判断在不在 Key 中,而不是看 Value:
>>> b = 'c'
>>> b in {
'c':1}
True
>>> b = 1
>>> b in {
'c':1}
False
涉及到 “对象” 的知识,这里只是先简单了解一下。
例子:
>>> a = 1
>>> b = 2
>>> a == b
False
>>> a = 1
>>> b = 1
>>> a is b
True
>>> a = 1
>>> b = 1.0
>>> a == b
True
>>> a is b
False
总结:
is 比较的是两个变量身份是否相等,也就是 比较内存地址 是否相等。
而关系运算符 比较的是 两个变量取值 是否相等。
思考题:
>>> 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
扩展知识:
>>> a = 'hello'
>>> type(a) == int
False
>>> isinstance(a,str) ————————a是不是str类型的变量
True
>>> isinstance(a,(int,str,float))————————a是不是 int,str,float 类型中的一种
True
>>
右移动————————都是 把数字当做二进制进行运算
1)按位与 &
>>> a=2
>>> b=3
>>> a & b
2
——————先把非二进制数转化为二进制数, 则 2 对应 1 0 ,3 对应 1 1
——————然后将两个二进制数 1 0 与 1 1 的每一相同位 都进行比较,如果相应的位数上面 两个位数都为1 就得到结果1,否则得到结果 0
——————即 1 与 1相同得到1 , 0 与 1不同 得到 0 ,故得到结果 1 0 ,转为十进制 就得到 2
2)按位或 |
同样是上面的例子,两个二进制数 相同位数上的 数 只要有一个为1,结果 就为1,两个都为0 结果才是0
所以得到结果11, 转化为十进制就是3