Python第二堂课

对象(object)

-Python是一门面向对象的语言
-一切皆对象
-程序运行当中,所有的数据都是存储到内存当中,然后再运行的
-对象就是内存中专门用来存储指定数据的一块区域
-对象实际上就是一个容器,专门用来存储数据
-像我们之前学习的数值、字符串、布尔值、None都属于对象

对象的结构

- 每个对象中都要保存三种数据
	-id(标识)
		>id用来标识对象的唯一性,每一个对象都有唯一的id
		>对象的id就相当于人的身份证号一样
		>可以通过id()函数来查看对象的id
		>id是由解析器生成的,在CPython中,id就是对象的内存地址
		>对象一旦创建,则它的id永远不能再改变
	-type(类型)
		>类型用来表示当前对象所属的类型
		>比如:int str float bool...
		>类型决定了对象有哪些功能
		>通过type()函数来查看对象的类型
		>Python是一门强类型语言,对象一旦创建,类型便不能修改
	-value(值)
		>值就是对象中存储的具体的数据
		>对于有些对象,值是可以改变的
		>对象分成两大类,可变对象和不可变对象
			可变对象的值可以改变
			不可变对象的值不能改变,之前学习的对象都是不可变对象

变量和对象

-对象并没有直接存储到变量中,在Python中变量更像是给对象起了一个别名
-变量中存储的不是对象的值,而是对象的id(内存地址)
	当我们使用变量时,实际上就是通过对象的id在查找对象
-变量中保存的对象,只有在为变量重新赋值时才会改变
-变量和变量之间是相互独立的,修改一个变量不会影响另一个

类型转换

-所谓类型转换,将一个类型的对象转换为其他对象
-类型转换不是改变对象本身的类型,而是根据当前对象的值创建一个新对象

类型转换四个函数 int() float() str() bool()

int() 可以用来将其他的对象转换为整型
规则:

  • 布尔值:True->1 False->0
  • 浮点数:直接取整,省略小数点后的内容
  • 字符串:合法的整数字符串,直接转换为对应的数字
  • 如果不是一个合法的整数字符串,则报错ValueError: invalid literal for int() with base 10:
    ‘11.5’
  • 对于其他不可转换为整型的对象,直接抛出异常
  • 调用int()来将a转换为整型
#int(a) 这样不会对原来变量产生影响,它是将对象转换为指定的类型,并将其作为返回值返回
#如果希望修改原来的变量,则需要对变量进行重新赋值
a = True
a = int(a) >>1

a = '123'
a = int(a) >>123

a = 11.6
a = int(a) >>11

a = '11.5'
a = int(a) >>不可转

a = 1
a = float(a) >>a =  1.0

a = False
a = float(a) >>a =  0.0

a = 123
a = str(a) >>a =  123

a = 1
a = bool(1) >> True

a = 0
a = bool(a) >> False

b = 456
print('hello'+str(b)) >>hello456

运算符(操作符)

-运算符可以对一个值或多个值进行运算或各种操作
-比如 + - = 都属于运算符
-运算符的分类:
	1.算数运算符
	2.赋值运算符
	3.比较运算符(关系运算符)
	4.逻辑运算符
	5.条件运算符(三元运算符)
# 算数运算符
# + 加法运算符(如果是两个字符串之间进行加法运算,则会进行拼串操作 )
# - 减法运算符
# * 乘法运算符(如果将字符串和数字相乘,则会对字符串进行复制操作,将字符串重新指定次数)
# / 除法运算符,运算时结果总会返回一个浮点类型
# //整除,只会保留计算后的整数位
## % 取模,求两个数相除的余数
a = 10 + 5
a = 'hello' + ' '+'world' #拼串

a = 10 - 5 #计算
a = 5 - True
a = a - 2 #用变量a的值减去2,再赋值给a

a = 5 * 5
print('a = ',a)

a = 10 / 5
a = 5 / 2 #>>2.5
#a = 5 / 0	ZeroDivisionError: division by zero 
a = 10 // 3 #3

a = 5 // 2
a = 2 ** 2
a = 10 ** 5
a = 16 ** 0.5 #求16的平方根


a = 10 % 5
a = 10 % 4
a = 10 % 3
print(a)
# 赋值运算符
#可以将等号右侧的值赋值给等号左侧的变量
# +=  
# -=
# *=
# **=
# /=
# //=
# %=
a = 10
#a = a + 5
a += 5

print('a = ',a)
#关系运算符
#关系运算符用来比较两个值之间的关系,总会返回一个布尔值
#如果关系成立,返回True,否则返回False
# >
# >=
# <
# <=
# ==
# !=
# 相等和不等比较的是对象的值,不是id
# is 比较两个对象是否是同一个对象,比较的是对象的id
# is not 比较两个对象是否不是同一个对象,比较的是对象的id

# 在Python中可以对像个字符串进行大于(等于)或小于(等于)的运算
# 当对字符串进行比较时,实际上比较的是字符串的Unicode编码
# 比较两个字符串的Unicode编码时,是逐位比较的
# 利用该特性可以对字符串按照字母顺序进行排序,但是对于中文来说,意义不是特别大
# 注意:如果不希望比较两个字符串的Unicode编码,则需要将其转换为数字然后再比较
result = 'a' > 'b' #False
print(result) 

result = 1 is True #False
result = 1 is not True #True
print(result) 

print(int('2')>int('11')) #Flase
# 逻辑运算符
# 逻辑运算符主要用来做一些逻辑判断
# not 逻辑非
#	not可以对符号右侧的值进行非运算
#		对于布尔值,非运算会对其进行取反操作,True变False,False变True
#		对于非布尔值,非运算会先将其转换为布尔值,然后再取反
# and 逻辑与
#	and可以对符号两侧的值进行与运算
#	只有在符号两侧的值都为True时,才会返回True,只要有一个False才会返回False
#	与运算是找False
#	Python中的与运算是短路的与,如果第一个值为False,则不再看第二个值
#
# or 逻辑或
#	or 可以对符号两侧的值进行或运算
#	或运算两个中只要有一个True,就会返回True
#	或运算是找True的
#	Python中的或运算是短路的或,如果第一个值为True,则不再看第二个值
#	

a = True
a = not a #对a进行非运算

a = 1
a = ''
a = not a
#print(a)

result = True and True
result = True and False
result = False and False
#print(result)

#True and print('你猜我出来吗') 第一个值为True,会看第二个值,所以print()会执行
#False and print('你猜我出来吗') 第一个值为False,不会看第二个值,所以print()不会执行

result = True or True
result = False or False
result = True or False
#print(result)

1 and 2
'11' and '22'
#False or print('你猜我猜的出来吗')  第一个值为False,继续看第二个,打印语句执行
#True or print('你猜我猜的出来吗')


# 非布尔值的与或运算
# 当我们对非布尔值进行与或运算时,Python会将其当做布尔值运算,最终会返回原值
# 与运算的规则
#		与运算是找False的,如果第一个值是False,则不看第二个值
#		如果第一个值是False,则直接返回第一个值,否则返回第二个值
# 或运算的规则
#		或运算时找True的,如果第一个值是True,则不看第二个值
#		如果第一个值是True,则直接返回第一个值,否则返回第二个值
result = 1 and 2  #True and True  >>2
result = 1 and 0 # 0
result = 0 and 1 # 0
result = 0 and None # False and False >>0
result = 2 and 1  #True and True  >>1

result = 1 or 2 # 1
result = 1 or 0 # 1
result = 0 or 1 # 1
result = 0 or None #None
print(result)
# 条件运算符(三元运算符)
# 语法:语句1 if 条件表达式 else 语句2
# 执行流程:
#	条件运算符在执行时,会先对条件 表达式进行求值判断
#		如果判断结果为True,则执行语句1,并返回执行结果
#		如果判断结果为False,则执行语句2,并返回执行结

# print('你好') if False else print('hello')


a = 10 
b = 20
# print('a的值比较大') if a>b else print('b的值比较大')
max = a if a>b else b
print(max)

#练习:
#  现在有a b c三个变量,三个变量中分别保存有三个数值
		# 请通过条件运算符获取三个值中的最大值
num1 = 10
num2 = 9
num3 = 11
max = (num1 if num1 > num2 else num2) if (num1 if num1 > num2 else num2) > num3\
									else num3
print(max) 
#运算符的优先级
a = 10
b = 50
c = 30

# 通过条件运算符获取三个值中的最大值
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)

# 运算符的优先级
# 和数学中一样,在Python中运算符也有优先级,比如先乘除后加减
# 运算符的优先级可以根据优先级的表格来查询
# 	在表格中位置越靠下的运算符优先级越高,优先级越高的越优先计算
#	如果优先级一样则自左向右计算
#	关于优先级的表格,知道有就够了,不会的去查
a = 1 + 2 * 3

# 一样 and高 or高
# 如果or的优先级高,或者两个运算符的优先级一样高
# 	则需要先进行或运算,则运算结果是3
# 如果and优先级高,则应该先进行与运算
#	则运算结果1
a = 1 or 2 and 3
a = (1 or 2) and 3

# print(a)

# 逻辑运算符(补充)
# 逻辑运算符可以连着使用
result = 1 < 2 < 3 # 相当于 1 < 2 and 2 < 3
result  = 10 < 20 > 15 # 相当于 10 < 20 and 20 > 15

print(result)


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值