一 对象(Object)
Python是一门面向对象的语音
一切皆对象
程序运行当中,所有的数据都是存储到内存当中然后在运行的
对象就是内存中用来存储指定数据的一块区域
对象实际上就是一个容器,专门用来存储数据
数值,字符串,布尔值,None都是对象
二 对象的结构
每个对象中都要保存三种数据
-id(标识)id用来标识对象的唯一性,每一个对象都有一个唯一的id。可以通过id()的函数来查
看对象的id,id是由解析器生成的,在Cpython中,id就是对象的内存地址
对象一旦创建,id不能再改变
-type(类型)
类型用来表示当前对象的所属类型:int,str,boolean,float
类型决定了对象有哪些功能
type()函数查看类型
Python是一门强类型语言,对象一旦创建了类型就不能改变
-value
值就是对象中存储的具体的数据,
对于有些对象值是可以改变的
对象可以分为俩大类
可变对象
不可变对象 数值,字符串,布尔值,None都是不可变对象
三 变量和对象的关系
对象并没有直接存储到变量中,在Python中变量更像是给对象起了一个别名
a=123
变量=>a 值=>对象的id 通过id找到对象找到对象的值
b=a
b=>a=>对象的id
变量中保存的对象只有在为变量重新赋值时才会改变
变量和变量之间是相互独立的,修改一个变量不会去影响另一个变量。
四 类型转换
-所谓的类型转换,就是将一个类型的对象转换为另一个类型的对象
-类型转换不是改变对象本身的类型,而是将对象的值转换为新的对象
-类型转换的四个函数int(),float(),str(),bool()
-如果希望修改原来的变量,需要重新赋值
a=True
a=int(1)
print(type(a))
<type 'int'>
-浮点数直接舍去小数位
b=11.6
print(int(b))
11
字符串转为数字需合法
b='11.6'
print(int(b))
ValueError
-float和int基本一致,不同的是它会将对象转换为浮点数
-str()乱转
b=123
print('hello'+str(b))
-bool()可以将对象转为布尔值,任何对象都可以转为布尔值,
所有表示None的都是false其余为true 比如0,None,''。
五 运算符(操作符)
运算符的分类
1 算数运算符
+ - * /
字符串和数字相乘,会对字符串进行复制操作
除法运算总会返回一个浮点数,除数不能为0
// 整除符号,只会保留计算后的整数位
** 幂运算 16**0.5 就是求16的平方根
% 模运算 就是求余数
2 赋值运算符
可以将等号右侧的值给左侧的变量
+= a+=5 a=a+5
-=
*=
**=
/=
//=
%=
3 比较运算符
用于比较俩个值的关系总会返回一个布尔值,> < == <= >= !=
print('2'>'11') true
对俩个字符串进行比较的时候,实际上比较的是字符串的unicode的编码
print('a'>'b') false
print('ab'>'b') false
当比较俩个字符串的unicode编码时,是逐位比较的
如果不想比较Unicode,转为整数 int()
== 比的不是id是值 is比较的俩个对象的id, is not比较的是id
print('result =',1 is not true)
4 逻辑运算符
not and or
逻辑运算符主要用来做一些逻辑判断
Python中的与运算(and)是短路的与 如果第一个值是false就不会再执行后面
证明:False and print(1)
Python中的或运算(or)是短路的或 如果第一个值是True就不会再执行后面
证明:True or print(1)
-非布尔值与或运算
当我们对非布尔值进行与或运算时候,Python会将其当做布尔值运算,最终会返回原值
如果第一个值是flase直接返回第一个值,否则返回第二个值
或运算则相反 or
result=1 and 2 #2
result=1 and 0 #0
result=0 and 1 #0
result=0 and None #0
result=1 or 2 # 1
result=1 or 0 # 1
result=0 or 1 # 1
result=0 or None # None
逻辑运算符可以连着使用
1<2<3想当于1<2 and 2<3
10<20>15 对中间数进行比较的
5 条件运算符(三元运算符)
语法:if expression:
expr_true_suite
else:
expr_false_suite
执行流程:
条件运算符在执行时,会先对条件表达式进行求值判断 true则执行语句1否则执行2
if True:
print('1')
else :
print('2')
取a/b间的最大值
max =a if a>b else b
print(max)
如果取a/b/c中的最大值
max= a if (a>b and a>c) else (b if b>c else c)
python中的运算符的优先级和数据中的一样,先乘除再加减
逻辑运算符的优先级可以根据官网中的文档查询,表格中位置越靠下的优先级越高,如果优先
级一样则从左往右计算,所以not>and>or