一、对象
1、对象介绍
- Python 是一门面向对象的语言
- 一切皆对象
- 程序运行当中,所有的数据都是存储到内存当中然后再运行的!
- 对象就是内存中专门用来存储指定数据的一块区域
- 对象实际上就是一个容器,专门用来存储数据
- 像我们之前学的数值,字符串,布尔值,None都是对象
对象的结构:
- 每个对象中都要保存三种类型:
- id(标识)
》id用来标识对象的唯一性,每个一个对象都有唯一的id
》对象的id'就相当于人的身份证号一样
》可以通过id() 函数来查看对象的id,,如 id(123)
》id是由解析器生成的,在CPython中,id就是对象的内存地址。
》对象一旦创建它的id永远不能再改
- type(类型)
》类型用来标识当前对象所属的类型
》比如: int ,str , float,bool 。。。
》类型决定着对象有哪些功能
》通过type()函数可以去查看对象的类型
》Python是一门强类型的语言,对象一旦创建类型就不能修改
- value(值)
》值就是对象中存储的具体数据
》对于有些对象值是可以改变的
》对象分成两大类,可变对象,不可变对象
可变对象的值可以改变
不可变对象的值不能改变,之前我们接触的对象都是不可变对象
2、变量和对象的关系
- 对象并没有直接存储到变量中,在Python中变量更相当于给对象起了一个别名
- 变量中存储的不是对象的值,而是对象的id(内存地址)
- 当我们使用变量的时候实际上就是再通过对象的id查找对象
- 变量保存的对象只有在变量重新赋值的时候才会改变
- 变量(variable)可用来保存字面量,并且变量中保存的字面量是不定的
- 变量(variable)可以用来保存
3、类型转换
- 所谓的类型转换,将一个类型的对象转换为其他对象
- 类型转换不是改变对象本身的类型,而是根据当前对象的值创建一个新对象。。
# 类型转换四个函数 int() float() str() bool()
# int() 可以用来将其他的对象转换为整型
# 规则:
# 布尔值: True -》 1 False -》0
# 浮点数:直接取整,省略小数点后的内容
# 字符串: 合法的整数字符串,直接转换为对应的数字
# 如果不是一个合法的整数字符串,则保错: ValueError: invalid literal for int() with base 10: '11.5'
# 对于其他不可转换为整型的对象,直接抛出异常 ValueError
# float() 和 int() 基本上一至,不同的是它会将对象转为浮点数
# str() 它可以将对象转为字符串类型
# True -> 'True'
# bool() 可以将对象转换为布尔值,任何对象都可以转换为布尔值
# 规则 :对于所有表示空值的对象都会转换为False 其余的都转换为True
# 如 0 、None、 '' 等
a = True
# 调用 int() 来将a转换为整型
# int() 函数不会对原来的变量产生影响,它是对象转换为指定的类型并将其作为返回值返回
# 如果希望修改原来的变量,则需对变量进行重新赋值
a = True
int(a)
print('a = ',a)
print('a的类型是',type(a))
a=11.6
a= int(a)
print('a = ',a)
print('a的类型是',type(a))
a= '11.5'
a=int(a)
print('a = ',a)
print('a的类型是',type(a))
a = 2
a=float(a)
print('a = ',a)
print('a的类型是',type(a))
二、运算符
1、算术运算符
运算符也叫操作符
- 可以对一个值或者多个值进行运算或者各种操作
- 比如 + - = 都属于运算符
- 运算符分类
1、算术运算符
2、赋值运算符
3、比较运算符(关系运算符)
4、逻辑运算符
5、条件运算符(三元运算符)
算术运算符
# + 加法运算符 (如果是两个字符串之间进行加法运算,则会进行拼接操作)
# - 减法运算符
# * 乘法运算符(如果将字符串和数字相乘,则会对字符串进行复制操作,将字符串重复指定次数)('a' * 3)
# / 除法运算符 (运算的结果将返回一个浮点类型)
# // 整除运算符 ,运算结果将舍去小数部分,总会返回整型。
# ** 幂运算符 ,这就是求一个值的几次幂 (如 16 ** 0.5 可以求 16的平方根)
# % 取模, 求余运算
a = 10 + 5 # 计算
a = 'hello' + ' ' + 'world' # 拼接
a = 'hello' - 'h' 会报错,因为类型不一样
2、赋值运算符
# 赋值运算符
# = 可以将等号右侧的值赋值给等号左侧的变量
# += a+=5 相当于 a = a + 5 下面类同!
# -=
# *=
# /=
# //=
# %=
# a = 10
a = 25.0 # 在对浮点数进行算术运算的时候,结果也会返回一个浮点数
3、关系运算符
关系运算符
关系运算符用来比较两个值之间的关系,总是返回一个布尔值
如果关系成立,返回True 否则返回False
> 比较左侧值是否大于右侧值
>= 大于等于
<
<=
== 比较的是两个对象的值是否相等。
!= 不等于 result = 10 != 20
is 比较的是两个对象是否是同一个对象,比较的是对象的id
is not 比较的是两个对象是否是同一个对象,比较的是对象的id
也可以 result = 2 > True 会返回 False
result = 'a' > 'b' 会返回False 实际上比较的是 0061 > 0062 所以返回False
result = '2' > '11' 会返回True
在python中可以对字符串进行大于(等于)或者小于(等于)的运算
当对字符串进行比较时,实际上比较的是字符串的Unicode编码
result = 'ab' > 'b' 也会返回 False 比较两个字符串的 Unicode 编码时,时逐位比较的
利用上面的这个提点可以按照字母顺序进行排序,中文不支持哦
注意:如果不希望比较两个字符串的Unicode编码,则需要将其转换为数字然后在比较。
print(int('2') > int('1'))
result = 'abc' =='bcd' 返回 False
4、逻辑运算符
逻辑运算符主要用来做一些逻辑判断。。
- not 逻辑非
not 可以对符号右侧的值进行非运算。
对于布尔值,非运算会对其进行取反操作
对于非布尔值,非运算会先将其转为布尔值,然后在取反
- and 逻辑与
and 可以对符号两侧的值进行与运算
只有在符号两侧的值都为True时,才会返回True,只有有一个False就会返回False
与运算时找False的,实在没有Fasle才会返回True
python中的与运算时短路的与,如果第一个值为False则不会在去看第二值
- or 逻辑或
or 可以对符号两侧的值进行或运算
或运算两个值中只有一个True ,就会返回True
或运算时找True的
Python中的或运算时短路的或,如果第一个值为True,则不再看第二个值
a = True
a = not a
print(a) # 结果为假
a = 1
a = not a
print('a = ',a) 结果为False
result = True and True # True
result = True and False # Fasle
result = False and True # False
result = False and False # False
True and print("你看我出来吗?") 第一个值为True,会看第二值,所以为print()执行
False and print("不出来的") 这个就不会出来
逻辑运算符也可以连起来使用,,都是对中间的数进行比较的。
result = 1 < 2 < 3 # 当大于2大于1 同时2 小于3
print(result) # True
5、非布尔值的与或运算
非布尔值的与运算,
当我们对非布尔值进行与或运算时,Python会将其当做布尔值运算,最终返回原值。
与运算的规则
与运算时找False的,如果第一个值是False则不会看第二个值
如果第一个值是False 则直接返回第一个值,否则返回第二值
或运算规则
或运算是找True 的,如果第一个值是True 则不会看第二值了
如果第一个值是True,则直接返回第一值,否则返回第二值
# True and True
result = 1 and 2 # 2
# True and False
result = 1 and 0 # 0
# False and True
result = 0 and 1 # 0
# False and False
result = 0 and None # 0
print(result)
6、条件运算符
条件运算符,又称为三元运算符
语句: 语句 1 if 条件表达式 else 语句2
执行流程:
条件运算符在执行时,会先对条件表达式进行求值判断
如果判断结果为True,则执行语句1,返回执行结果
如果判断结果为False,则执行语句2,并返回执行结果
print('你好') if Fasle else print('hello')
a = 30
b = 20
print('a的值比较大!') if a > b else print('b的值比较大!')
获取a 和b 之间的较大值
max = a if a > b else b # 这样a和b的值那个大返回那个数
print(max)
练习 : 有三个变量 a b c 求最大的值是那个
a = 30
b = 40
c = 50
max =a if a > b else b
max =max if max > c else c
print(max)
或者
max = a if (a > b and a > c) else (b if b > c else c)
print(max)
7、运算符的优先级
和数学中一样python运算也有优先级,比如先乘除,后加减
运算符优先级可以根据优先级的表格来查询
在表格中位置越靠下的运算符优先级越高,优先级越高越优先计算
Python documentation > The Python langeuage Reference > Expessions > Comparisons > Operator precedence
如果优先级一样则自左向右计算
在开发中如果遇到优先级不清楚的则可以通过加小括号去改变优先级。
a = 1 + 2 * 3
'# 一样 and 高,or 高
# 如果or 的优先级高,或者两个运算符的优先级一样高
# 则需要先进行或运算,则运算结果是3
# 如果and的优先级高,则应该先计算与运算
# 则运算结果是1
a = 1 or 2 and 3
print(a)