Python碎片日记08——小数和分数(简要介绍);类型检验问题;用户定义类(简单例子)

本文介绍了Python中为解决浮点数不精确性引入的小数和分数类型,探讨了类型检验的反模式,并提供了一个简单的用户定义类的例子,强调Python的多态思想。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

小数和分数

Python添加了一些新的数值类型:十进制和分数,用来解决浮点数学的局限性和内在的不精确性;布尔值:False、True、None(通常用来初始化名字和对象的占位符对象)

  • 十进制:
import decimal
d = decimal.Decimal('3.14')
decimal.getcontext().prec = 2 # 设置精度
decimal.Decimal('1.00') / decimal.Decimal('3.00') # 运行结果是Decimal('0.33')
  • 分数:
from fractions import Fraction
f = Fraction(2,3) #2/3分数

类型检验

在Python中,可以使用type()函数检查对象的类型(在Python3中,检查结果的“type”改成了“class”,不影响阅读效果),如下:

if type(L) == type([]):  # type([])代表列表类型
 print("yes")
if type(L) == list:  
 print("yes")
if isinstance(L, list): 
 print("yes")

但是,在程序中这样做是错误滴!!
在代码中检验了特定的类型,实际上破坏了它的灵活性,即限制它只能用一种类型工作。——《Python学习手册》P113
这是由于Python没有类型声明而发展而来的。类型检测不是“Python式”的思维方式。多态是Python的一个关键思想。

用户定义类

一个小例子:

#类定义
class Worker:
	def _init_(self, name, pay): # name和pay是属性,self是在类调用时自动获取被处理的实例
		self.name = name
		self.pay = pay
	def lastName(self): #以下两种是定义的方法
		return self.name.split()[-1]
	def giveRaise(self, percent):
		self.pay *= (1.0 + percent)
#类调用
bob = Worker('Bob Smith',50000) #定义中的self直接忽略
bob.lastName() # 调用方法
bob.giveRaise(.10)
bob.pay # 调用属性

隐含的“self”对象是我们把这叫做面对对象模型的原因。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值