python入门学习笔记——详细基础知识篇(第五章: 变量与运算符)

第五章: 变量与运算符

  • 1. 什么是变量
  • 2. 变量的命名规则
  • 3. 值类型与引用类型
  • 4. 列表的可变与元组的不可变
  • 5.运算符号大总结
  • 6.赋值运算符
  • 7. 比较(关系)运算符
  • 8. 不只是数字才能做比较运算
  • 9. 逻辑运算符
  • 10. 成员运算符
  • 11. 身份运算符(is / is not )
  • 12. 如何判断变量的值、身份与类型
  • 13. 位运算符

1. 什么是变量

  • 在python中,变量就可简单理解为 一组数据的一个名字

  • “ = ” 是赋值符号,用于给变量赋值的

  • 优质的代码可读性是很强的,所以给变量取名字,一定是要有意义的,让别人看到名字就能马上知道变量表示的是什么。推荐用简短的英文单词来表示一个变量,不建议用汉语拼音来表示,推荐用一些地道的英文,不知道的多查一些英文字典。

2. 变量的命名规则

  • 变量命名只能是 字母、数字、下划线 组成,但是不能以数字开头。(除了下划线不能包含其他的符号!)

  • (系统关键字)保留关键字 不能用在变量名中。type不是保留关键字,但是最好不要用于变量名。

  • python变量名是区分大小写的。

  • python里的变量是没有类型限制的。(但是在其它一些语言中不是的:例如int a之后,变量a就只能赋值成整型)

3. 值类型与引用类型

下面看一个例子:
python入门学习笔记——详细基础知识篇(第五章: 变量与运算符)_第1张图片
思考:为什么同样是改变了a的值,但是b的变化却不一样呢?
python入门学习笔记——详细基础知识篇(第五章: 变量与运算符)_第2张图片总结:
引用类型 是可改变的————包括 list、 set、 dict
值类型本身 是不可变的:要改变只能重新生成一个新的————包括 int 、str、 tuple

>>> a = ' hello '
>>> a = a + 'python'
>>> print(a)
hellopython

注:虽然字符串是不可变的,但是 a+'python' 实际上是指向了一个新的字符串了!!!

>>>'python'[0]
'p'
>>> 'python'[0] = 'o'
————————会报错

因为这里就是我们说的字符串是不可变的

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

上一小节说到的可变性,实际上可以理解为改变了值,不会改变它的内存地址。

建议:能够用元组表示列表时,就尽量用元组,因为在分工合作的复杂编程项目中,它的不可改变性可以避免一些隐藏的错误,可以保持代码的稳定性

多维元组:

>>> a = (1,2,3,[1,2,['a','b']])
>>> a[3][2][1]
'b'
>>> a[3][2]='4'  ————————不会报错,这样是可以修改的,因为我们实际上改变的是列表。
>>> a[2]————————会报错,不可以这样修改。
 

5.运算符号大总结

6.赋值运算符

注:在python中,是不存在变量的定义的,最好说 “ 把…赋值给变量… ”,因为Python中变量就是一个名字。

C += 1 等价于 C=C+1——————在Python中不存在 c++ 或 c - -

其他的赋值运算符类似,不一 一列举了。

7. 比较(关系)运算符

比较————不只是比较数字,也可以是布尔类型,字符串。

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

1)思考题:

>>> b=1
>>> int (True)
1
>>> b+=b>=1
>>> print(b)
?

b 的结果应该是2,因为 b>=1 为True,所以 b += b >=1 等价于 b = b+True 。

2)哪些可以比较不需要死记硬背,遇到的时候就可以去翻一翻手册或者自己运行一下 ,这样的方法更好。

9. 逻辑运算符

操作类型 和 返回结果 都是布尔类型。

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 运算:第一个值为真时,整个结果就为真,不需要再看第二个值了,会直接返回第一个值

10. 成员运算符

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

11. 身份运算符(is / is not )

涉及到 “对象” 的知识,这里只是先简单了解一下。

例子:
>>> 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 比较的是两个变量身份是否相等,也就是 比较内存地址 是否相等
而关系运算符 比较的是 两个变量取值 是否相等

12. 如何判断变量的值、身份与类型

思考题:

>>> 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

扩展知识:

  • 对象的三个特征:值,身份,类型。(value、id、type)
  • 例子:
>>> a = 'hello'
>>> type(a) == int
False

>>> isinstance(a,str)  ————————a是不是str类型的变量
True
>>> isinstance(a,(int,str,float))————————a是不是 intstrfloat 类型中的一种
True
  • 对象的三个特征都有各自的判断方式: == ,is ,isinstance
    这里推荐用 isinstance 来判断类型————因为他可以判断子类是什么类型的,但是 type 不可以 (涉及到面向对象的知识,后面会讲到)

13. 位运算符

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

————————都是 把数字当做二进制进行运算

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

你可能感兴趣的:(#,python入门课程学习笔记,python,python基础知识,编程语言)