变量在内存中的原理
-
原理:变量在内存中就是一块特定的存储区域(地址)。
-
变量在内存中都是由一块划定的区域,存储了这个对象的id、type、value
-
整数
- 不可变类型,id值不会变
- 引用变量,id值不会变(不只是适用整数)
- 不可变类型,id值不会变
-
字符串
- 不可变类型
- 如果强行改变,id也会变
- 不可变类型
-
列表
- 可变类型,id也会变
- copy 相当于把一个东西复制一份放在其他位置,id表示位置,所以id会变
- copy的浅拷贝属性:只能拷贝第一层数据,更深层次的数据id值不会变
- 可变类型,id也会变
运算符
- 运算符用于执行程序代码运算,会针对一个以上操作数项目来进行运算。
运算符的分类
- 算术运算符
- 赋值运算符
- 比较运算符(关系运算符)
- 逻辑运算符
- 条件运算符(三元运算符)
算术运算符
- 加法运算符 +
- 减法运算符 -
- 乘法运算符 *
- 除法运算符 /
- 整除,只会保留计算后的整数位,总会返回⼀个整型 //
- 取模,求两个数相除的余数 %
- 幂运算,求一个值的几次幂 ** 例2**3为2的3次幂
赋值运算符
赋值运算符的特殊写法 x = x + 3 其实是和 x += 3 是一样的
- += (x+= 3 相当于 x = x + 3 )
- -= (x -= 3 相当于 x= x - 3 )
- *= (x = 3 相当于 x = x 3 )
- **= (x **= 3 相当于 x = x ** 3 )
- /= (x /= 3 相当于 x = x/ 3 )
- //= (x //= 3 相当于 x = x // 3 )
- %= (x %= 3 相当于 x= x % 3 )
比较运算符
用来比较两个值之间的关系,总会返回一个布尔值.如果关系成立,返回True,否则返回False
- 比较左侧值是否大于右侧值>
- 比较左侧的值是否大于或等于右侧的值>=
- 比较左侧值是否小于右侧值<
- 比较左侧的值是否小于或等于右侧的值<=
- 特殊的比较方式
== 比较两个对象的值是否相等
!= 比较两个对象的值是否不相等
-is 比较两个对象是否是同一个对象,比较的是对象的id
-is not 比较两个对象是否不是同一个对象,比较的是对象的id
逻辑运算符
- 逻辑非 not
not可以对符号右侧的值进行非运算,对于布尔值,非运算会对其进行取反操作,True变False,False变True - and 逻辑与
and可以对符号两侧的值进行与运算。 只有在符号两侧的值都为True时,才会返回True,只要有一个False就返回False
与运算是找False的,如果第一个值为False,则不再看第二个值 - or 逻辑或
或运算两个值中只要有一个True,就会返回True
或运算是找True的 - 非布尔值的与或运算
当我们对非布尔值进行与或运算时,Python会将其当做布尔值运算,最终会返回原值
非布尔值与运算的规则
与运算是找False的,如果第一个值是False,则不看第二个值。如果第一个值是False,则直接返回第一个值,否则返回第二个值
a = 4 and 5
print(a)
#4为True,返回第二个值
a = 0 and 3
print(a)
#0为False,返回0
非布尔值或运算的规则
或运算是找True的,如果第一个值是True,则不看第二个值。如果第一个值是True,则直接返回第一个值,否则返回第二个值
a = 1 or 2
print(a)
#1为True,直接打印第一个值
a = ''or 3
a = ' 'or 3
print(a)
#''是带有空值性质的值,相当于False,返回第二个值
#注意 ''和' '不同,后者代表空格,不是空值性质的值,返回的是空格
条件运算符(三元运算符)
条件运算符在执行时,会先对条件语句中的表达式进行求值判断
如果判断结果为True,则执行语句1,并返回执行结果
如果判断结果为False,则执行语句2,并返回执行结果
语法: 语句1 if 条件表达式 else 语句2
a = 30
b = 40
result = a if a > b else b
print(result)
#a 语句1
#a > b 条件表达式
#b 语句2
#a>b成立 输出语句a 不然输出语句b
运算符的优先级
作业
以4种格式化字符串的方式来实现 521 xxx 嫁给我好吗?
#方法1
str1 = '521'
str2 = '切尔西'
str3 = '嫁给我好吗? '
str = str1 + str2 + str3#方法1
print(str)
print('521%s嫁给我好吗' % '切尔西' )#方法2
input_1 = '切尔西'
print(f'521{input_1}嫁给我好吗')#方法3
print('521{}format嫁给我好吗'.format(input_1))#方法4
现在有a b c三个变量,三个变量中分别保存有三个数值,请通过条件运算符获取三个值中的最大值
a,b,c = 10,5,20
max_1 = a if a>b else b
max_2 = max_1 if max_1>c else c
print(max_2)