Python笔记--4 变量那些事(1)

变量简介
  • Python中变量即对象
    • Python的一个变量包括标识符、数据类型、数值3部分。
      • 标识符:变量的名称,如a = 2; a 就是标识符
      • 数据类型:Python的数据类型包括(数值型、字符串型、列表、元组、字典等)可以使用type(var_name)的方式查看变量的数据类型
      • 数值:a = 2 中的 2 即为数值(数值不一定是数
    • Python变量在定义时,必须赋值。
      • 在定义变量的时候,不能直接指明某个变量的数据类型(Python语法可以看出)
      • 在定义时,内存要根据定义变量的数据类型来开辟相应的空间,所以既然不能通过显式的指明数据类型,那么就必须通过隐式的方式指明变量的数据类型。
      • 所以在定义时必须同时赋值,然后根据所赋的数值来判断变量的数据类型。
变量运算
  • 算数运算(要注意的几个点)
    • “/” 和 “//” 的区别:“/”两数相除所得结果为浮点数(数据类型为float),“//”两数相除所得结果为整数(数据类型为int)。
      • 举例: a = 4, b = 2, f = a/b, d = a//b; print (type(f) , type(d))
        输出结果为:<class ‘float’> <class ‘int’>
    • int(x,[base]):将x的数据类型转化为int;
      • x为需要转化的变量,默认情况下(base不指定值时,此时base的值为10(以十进制转化)),x的值可以为字符串、其他数字;当base被赋予自他值时,x只能为字符串
    • is和==
      • a is b;要求变量a和变量b的值要相同,存储地址也要相同(id(a),id(b)相同)。
      • a == b;只要求变量a和变量b的值相同。
      • 两者的返回值都是只有True和False两种结果
    • 赋值:=
      • 注意点:x = 2(假设此时x的存储地址为a), y = 4(假设此时y的存储地址为b), x = y(此时不仅x和y的值都是4,而且它们的地址都是变量y原来的地址b,你没与看错,两个变量的存储地址都变成了b
    • 连续比较a<b<c等价于a<b and b<c;
  • 逻辑运算
    • a,b为逻辑变量(True ,False)
      • and,&:a and b,a&b ;只有在a和b两个均为 True 时结果才为True,而且只有在a为True的前提下,才会去检查b是否为True,也就是说,如果a为False,则结果直接为False。
      • or, | : a or b ,a | b;只有在a和b两个均为False时结果才为False,而且只有在a为False的前提下,才会去检查b是否为False,也就是说,如果a为True,则结果直接为True。
      • not !:!a,not a a为False,结果为True,取反。
    • a,b为数值
      • &: 位运算,例如a=1(0001二进制) b=2(0010二进制),则a&b的运算是这样的,两个的二进制数值的对应位置做与运算(与运算,只有两个均为1时才为1),此处结果为0(0000二进制)
      • |:位运算,同上a,b; a|b运算,对应位置做或运算,此处结果为3(0011二进制)
      • and:a and b,如果a和b中至少存在一个0,则返回0,如果两个变量都不是零,则返回最后一个变量的值;例如2 and 3#结果为3;2 and 0#结果为0
      • or: a or b, 如果a和b全为0,则结果为0,如果至少有一个变量不为0,则返回第一个不为零的变量的值;比如 0 or 2 or 3#结果为2
  • 移位运算
    • << >>左移运算和右移运算;原理:根据二进制数进行移位运算。
缓存机制

Ps:此处参考《Python带我起飞》部分内容

#范围在[-5,256]之间的小整数
#字符串
#之前创建过的就直接存入缓存,不再重新创建,作用于全局
int a, b = 2, 2
print(id(a), id(b))
#结果为 1688043664 1688043664(地址相同)说明在创建变量b时并没有重新开辟新的空间,而是使用了缓存中已经存在的相同值。
a, b = "pw", "pw"
print(id(a), id(b))
#结果为1940211868368 1940211868368(地址相同)
---------------------------------------------------------------------
#大于256的整数
#大于0的浮点数
#之前在该代码块中创建过就存入缓存机制,作用于本代码块
def func1():
	a = 2.0
	b = 2.0
	print(id(a), id(b))
def func2():
	c = 2.0
	print(id(c))
#结果为  1861453943216 1861453943216(相同代码块里的地址相同)
#	1861453943240
----------------------------------------------------------------
#小于-5的小整数
#小于0的浮点数
#不进行缓存,每次都进行重新创建
a, b = -6,-6
print(id(a), id(b))
#结果为2540663302544 2540663302672(地址不相同)
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值