Python是一门很灵活的语言,也有很多实用的方法和技巧。格式化小数保留指定位数,有多种方法实现。有三种方法判断变量的类型,下面和大家一起来看看。
![]() 文章目录
(免费学习推荐:python视频教程) 一、小数保留指定位小数 1.%f 方法 f = 1.23456f1 = '%.4f' % f f2 = '%.2f' % fprint(f1,type(f1))print(f2,type(f2)) 打印 1.2346 <class 'str'>1.23 <class 'str'> 易知,这种方法会进行四舍五入,但是将浮点型转化成了字符串值,已不再是原始的数值。 2.format函数 f = 1.23456f1 = format(f,'.4f')f2 = format(f,'.2f')print(f1,type(f1))print(f2,type(f2)) 打印 1.2346 <class 'str'>1.23 <class 'str'> 同理,这种方法也会进行四舍五入,但是将浮点型转化成了字符串值,已不再是原始的数值。 3.round()函数 a = 1.23456b = 2.355c = 3.5d = 2.5a1 = round(a, 3)b1 = round(b, 2)c1 = round(c)d1 = round(d)print(a1,type(a1))print(b1,type(b1))print(c1,type(c1))print(d1,type(d1)) 打印 1.235 <class 'float'>2.35 <class 'float'>4 <class 'int'>2 <class 'int'> 可以看出,round()函数最后得到的是数值(浮点型或整型),但是在“舍”和“入”的规律上不一定: 4.直接截断 a = int(1.23456 * 1000) / 1000print(a) 打印 二、判断变量的数据类型 1.type(): a = 1.23print(type(a)) 打印 2.isinstance() 原型为 a = 1.23tp = isinstance(a,float)print(tp) 打印 3.class.__name__属性 使用变量的 num = 1.23print(num.__class__.__name__) 打印: float 三、Python中的类方法(@classmethod) python做面向对象编程的时候,经常需要使用 class Man:
id = 0 # 类变量
def __init__(self, name):
self.name = name
self.id = self.id_number()
@classmethod
def id_number(cls):
cls.id += 1
return cls.id
a = Man('A')print(a.id)b = Man('B')print(b.id)打印 12 对Man这个类进行实例化2次,每个实例的id都不一样。这就依靠类方法来实现了:首先,用 需要注意的是,类方法处理的变量一定要是类变量。因为在类方法里你用不了self来寻址实例变量,所以需要把类变量放到最前面描述,如上面的"id=0"所示。类变量是可以被self访问的,所以,在类变量定义好了以后,不需要在_init_函数里对类变量再一次描述。所以,上面代码里self.id不一定需要。 四、str.format与制表符\t设置中文对齐 str.format对字符串进行格式化, #name是包含中文的字符串,22是整个字符串一行的总长度,一般要顾及测试才能得到,\t后的x是一标记字符,可换为别的所需的字符串print('[{string:<{len}}\tx'.format(string=string+']',len=22-len(string.encode('GBK'))+len(string)))具体可参考https://blog.csdn.net/excaliburrr/article/details/76794451 五、datetime模块timedelta类的使用 timedelta对象表示两个不同时间之间的差值, 这个差值的单位可以是:天、秒、微秒、毫秒、分钟、小时、周。 class datetime.timedelta(days=0, seconds=0, microseconds=0, milliseconds=0, hours=0, weeks=0) 所有参数都是默认参数,因此都是可选参数。参数的值可以是整数或浮点数,也可以是正数或负数。内部值存储days、seconds 和 microseconds,其他所有参数都将被转换成这3个单位:
然后对这3个值进行标准化,使得它们的表示是唯一的:
类属性:
实例方法和属性:
>>> import datetime>>>>>> datetime.timedelta(365).total_seconds() # 一年包含的总秒数31536000.0>>> dt = datetime.datetime.now()>>> dt + datetime.timedelta(3) # 3天后datetime.datetime(2020, 1, 22, 11, 17, 0, 214877)>>> dt + datetime.timedelta(-3) # 3天前datetime.datetime(2020, 1, 16, 11, 17, 0, 214877)>>> dt + datetime.timedelta(hours=3) # 3小时后datetime.datetime(2020, 1, 19, 14, 17, 0, 214877)>>> dt + datetime.timedelta(hours=-3) # 3小时前datetime.datetime(2020, 1, 19, 8, 17, 0, 214877)>>> dt + datetime.timedelta(hours=3, seconds=30) # 3小时30秒后 datetime.datetime(2020, 1, 19, 14, 17, 30, 214877) 更多关于Python对日期、时间的处理可参考https://www.jb51.net/article/105840.htm。 六、获取抛出的异常具体信息 很多时候,在Python运行抛出异常并接收到之后需要显示异常的具体信息,包括异常内容、异常所在的行数和异常所在的Python文件等等,分别使用 def get_exception_info():
try:
s = 2 / 0
except Exception as e:
print('异常内容:', e.args[0])
print('异常行数:', e.__traceback__.tb_lineno)
print('异常文件:', e.__traceback__.tb_frame.f_globals["__file__"])get_exception_info()打印: 异常内容: pision by zero 异常行数: 8异常文件: XXX/test.py 七、使用BeautifulSoup库去掉字符串中的HTML标签 有时候,字符串中含有HTML标签,如 text = """<p> <h1>Title</h1> <p>A long text........ </p> <a href=""> a link </a> </p>""" 需要得到 from bs4 import BeautifulSoup text = """<p> <h1>Title</h1> <p>A long text........ </p> <a href=""> a link </a> </p>"""clean_text = BeautifulSoup(text, "lxml").textprint(clean_text) 打印: Title A long text........ a link 显然,此时已经去掉了字符串中的HTML标签。
以上就是Python 编程开发 实用经验和技巧大放送的详细内容,更多请关注模板之家(www.mb5.com.cn)其它相关文章! |
