变量
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 引用类型!!(可以改变)
imagea指向列表
b指向列表
a并没有指向新的列表
而是把列表里的元素进行了更改
也导致了b指向的列表发生了更改
总结如下:
int str tuple (不可改变)值类型 不能改 只能生成新的
list set dict (可变) 引用类型 在原来的基础上做了改变
看个例子!
imageid()显示某个变量在内存中的地址
image5-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 image5-6赋值运算符
imageb=b+a 改变了B的值
a+b 不改变值
5-7比较运算符(两个变量之间的比较)
比较结束以后,会返回一个bool值
image5-8 不只是数字才能做比较运算
image上述输出True,属于bool类型,前面讲过bool类型属于Number,所以和数字可以直接相加减的!!!
True转换成数字类型为1
证明如下:
所以上述结果输出为2!!
不仅仅是数字才会做大小的比较的
看下面的例子!!!!
image想一想,‘abc' 和'abd'之间怎么比较?!
image如何比较呢?将字符串中的字母挨个进行比较。用ASC码(逐一比较即可)
下面看下列表和元组的比较
image也是逐一比较,同样的道理,集合 字典也是用此方法!!
5-9 逻辑运算符
逻辑运算符的操作类型和返回结果都是bool类型!!!!
imageand;两个为真才真
or 两个为假才假
not 非真即假 非假即真
看看下面的问题产生的原因!
非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
image5-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比较的两个变量的内存地址是否相等
思考题:
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 image5-12 如何判断变量的值、身份与类型
a == b (值得判断)
a is b (id 身份的判断)
看看类型type的判断
值,身份,类型 对象的三个特征(Python一切皆对象)
id value type
面向对象三个特征:封装、继承、多态
判断类型!!!
Python里有一个函数专门来判断类型!!!
(推荐使用)
isinstance
用法如下:
image image第二个参数可以是元组,接受多个类型
5-13位运算符
位运算符:把数字当做二进制数进行计算(位运算的秘籍)
按位与 &
都是1才是1
按位或 |
只要有一个为1就是1
同样的道理,按照上述方法,都可以得到结果!
作者:buaishengqi
链接:https://www.jianshu.com/p/4e6ea613642e
來源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。
引用自作者:buaishengqi
链接:https://www.jianshu.com/p/3f733a2c6f1b
网友评论