美文网首页
Python入门进阶笔记--05变量与运算符

Python入门进阶笔记--05变量与运算符

作者: 白眸怪ya | 来源:发表于2019-02-20 21:51 被阅读0次

变量

5-1 什么是变量?

一个列表称为A:[1,2,3,4,5,6] 一个是B列表[1,2,3]

要求先用列表A乘以3,然后加上B,最后在加上列表A,求结果?

image

这样的书写很不方便,万一列表很长,就显得很麻烦!

如果写成A*3+A+B,就很好了

这时候,需要引入一个概念称为 变量!!!

变量就是名字!!!

定义一个变量,如A=[1,2,3,4,5,6] "="就是赋值

image

变量的命名要有意义!!!

可以很简单的英文单词来表示一个变量!!!如三叶草:three_leaf_grass

变量名要有意义
= 赋值号
==比较大小的等号

命名规则

规则1:变量名的首字母不能是数字

变量命名可以是字母、数字、下划线自由组合,但是首字母不能是数字!!!

规则2:系统关键字(保留关键字),不能用在变量名里。如:and if 都不可以

注意区分大小写

字符串,整形,元组,列表 均可以赋值给变量!

5-3 值类型与引用类型

image

下面来看一个问题:

image

第二个 a并没有指向新的列表

如何解释上述两个问题?!!!

int 是值类型 list 是引用类型 这两种类型有什么区别?!!!

image image

把一个变量a指向数字1
b指向数字1
a指向数字3

详细解释了int 值类型的方式!(值类型不可改变)

下面再来解释list 引用类型!!(可以改变)

image

a指向列表
b指向列表
a并没有指向新的列表
而是把列表里的元素进行了更改
也导致了b指向的列表发生了更改

总结如下:

int str tuple (不可改变)值类型 不能改 只能生成新的

list set dict (可变) 引用类型 在原来的基础上做了改变

看个例子!

image

id()显示某个变量在内存中的地址

image

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

能用元组用元组,要求稳定性
要求可变性的还是要用列表
上述标题中,列表是可变的,元组不可改变,怎么证明?
在内存中的地址一般是十六进制 , hex()转成十六进制


image

所以列表可变,元组不可变!!!

当一个列表或者元组增加一个的时候,会发生什么?

image

想一想,如下形式的两个元组,该如何访问到每一个?!!!!

a = (1,2,3,[1,2,4]) 访问列表中的4

a = (1,2,3,[1,2,['a','b','c']]) 访问列表中的字符串‘b’

如何操作?

image

上述例子中,如果想改变元组里的列表中的某个数,怎么办?

image

上述一步步验证了,列表可变,元组不可变!!!!

5-5 运算符号

以下算数运算符

image

下面是运算符的整理

image image image

5-6赋值运算符

image

b=b+a 改变了B的值
a+b 不改变值

5-7比较运算符(两个变量之间的比较)

比较结束以后,会返回一个bool值

image

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

image

上述输出True,属于bool类型,前面讲过bool类型属于Number,所以和数字可以直接相加减的!!!
True转换成数字类型为1
证明如下:

image

所以上述结果输出为2!!

不仅仅是数字才会做大小的比较的

看下面的例子!!!!

image

想一想,‘abc' 和'abd'之间怎么比较?!

image

如何比较呢?将字符串中的字母挨个进行比较。用ASC码(逐一比较即可)

下面看下列表和元组的比较

image

也是逐一比较,同样的道理,集合 字典也是用此方法!!

5-9 逻辑运算符

逻辑运算符的操作类型和返回结果都是bool类型!!!!

image

and;两个为真才真
or 两个为假才假
not 非真即假 非假即真
看看下面的问题产生的原因!

image

非bool类型的,如字符串和整数,到底什么情况下才能被当成false,什么情况 会被当成true参与逻辑运算?

image

下面是非bool类型逻辑运算的操作规则:

int float 中的0 被认为是false,非0表示true

字符串中,空字符串是false,非空字符串表示true

列表中,空列表是false,非空列表表示true

类似的还有tuple set dict

下面看看not and or 的返回规则,not返回的不是false 就是true,

接下来看看and 和or

image

5-10成员运算符

成员运算符的特点:

判断一个元素是否在一组元素里

成员运算符的返回值也是bool类型!!!就这两个特点!!

如题:

a = 1 ,a在不在列表[1,2,3,4,5]中,b=6,那么b在不在列表中?

image

下面来看看字典的成员运算符!
只针对字典中键值对中的键来判断


image

5-11身份运算符

返回的结果仍然是bool值

image

如果两个变量取值相等,则is返回true!!!

那么身份运算符的is,和关系运算符的==,有什么区别?

image

==表示值是否相等,两个变量的取值

is不是比较值是否相等,is比较的是两个变量的身份是否相等
也就是is比较的两个变量的内存地址是否相等

image

思考题:

a = {1,2,3}

b={2,1,3}

那么a == b,a is b结果是多少?做关系运算和身份运算

c = (1,2,3)

d = (2,1,3)

那么c == d,c is d 结果是多少?做关系运算和身份运算

image image

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

a == b (值得判断)

a is b (id 身份的判断)

看看类型type的判断

值,身份,类型 对象的三个特征(Python一切皆对象)
id value type
面向对象三个特征:封装、继承、多态
判断类型!!!

image

Python里有一个函数专门来判断类型!!!
(推荐使用)
isinstance

用法如下:

image image

第二个参数可以是元组,接受多个类型

5-13位运算符

位运算符:把数字当做二进制数进行计算(位运算的秘籍)

按位与 &
都是1才是1

image

按位或 |
只要有一个为1就是1
同样的道理,按照上述方法,都可以得到结果!

作者:buaishengqi
链接:https://www.jianshu.com/p/4e6ea613642e
來源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

引用自作者:buaishengqi
链接:https://www.jianshu.com/p/3f733a2c6f1b

相关文章

网友评论

      本文标题:Python入门进阶笔记--05变量与运算符

      本文链接:https://www.haomeiwen.com/subject/kybkyqtx.html