文章目录
- 一、小数保留指定位小数
- 二、判断变量的数据类型的两种方法
- 三、python中的类方法(@classmethod)
- 四、str.format与制表符\t关于中文对齐
- 五、遍历字典
- 六、datetime模块timedelta类的使用
一、小数保留指定位小数
很多人学习python,不知道从何学起。
很多人学习python,掌握了基本语法过后,不知道在哪里寻找案例上手。
很多已经做案例的人,却不知道如何去学习更加高深的知识。
那么针对这三类人,我给大家提供一个好的学习平台,免费领取视频教程,电子书籍,以及课程的源代码!
QQ群:101677771
1.%f 方法
打印
易知,这种方法会进行四舍五入,但是将浮点型转化成了字符串值,已不再是原始的数值。
2.format函数
打印
同理,这种方法也会进行四舍五入,但是将浮点型转化成了字符串值,已不再是原始的数值。
3.round()函数
打印
可以看出,round()函数最后得到的是数值(浮点型或整型),但是在“舍”和“入”的规律上不一定:
(1)round(x,n)函数中,是否进位或四舍五入,取决于n位以及n+1位小数的值
(2)只有当n+1位数字是5的时候,容易混淆,如果n为偶数,则n+1位数是5,则进位,例如round(1.23456,3)最终变为1.235
(3)如果n为奇数,则n+1位是数5,那不进位,例如round(2.355,2),最终为2.35
(4)如果n为0,即没有填写n的时候,最终结果与上面相反,即整数部分为偶数的时候,小数位5不进位,例如(round(2.5)变为2)。
(5)整数部分为奇数的时候,小数位5进位。(round(3.5)变为4)
4.直接截断
打印1.234
这种方法简单粗暴,直接去掉后边的,不管是否大于5。
二、判断变量的数据类型的两种方法
1.type():
打印<class 'float'>
。
2.isinstance()
原型为isinstance(x, A_tuple)
,
打印True
。
三、python中的类方法(@classmethod)
python做面向对象编程时候,经常需要使用classmethod的描述。类方法特别容易弄混淆,因为听起来就好像“类中的方法”一样。
类方法也算一种实用的技巧,简单描述之:“类方法让类模板具有记忆力”。
类模板就是我们所定义的类。在普通情况下,不使用类方法对类进行实例化,类本身是不具有记忆性的。只是当一个静态模板被套用多次而已。如果我们想让类在每一次实例化之后,都能记载一些记忆,会对很多操作很有用。
打印
对Man这个类进行实例化2次,每个实例的id都不一样。这就依靠类方法来实现了:首先,用@classmethod描述类方法,然后用"cls"代表本类。类方法对类属性进行的处理是有记忆性的。
需要注意的是,类方法处理的变量一定要是类变量。因为在类方法里你用不了self来寻址实例变量,所以需要把类变量放到最前面描述,如上面的"id=0"所示。类变量是可以被self访问的,所以,在类变量定义好了以后,不需要在_init_函数里对类变量再一次描述。所以,上面代码里self.id不一定需要。
四、str.format与制表符\t关于中文对齐
str.format对字符串进行格式化,{:<x}的语法表示左对齐(>为右对齐,^为居中),少于x位自动补齐(默认为空格补齐),但是对于中文字符并不能很好地支持,所以会导致有多行中文字符串时出现不能对齐的现象,需要考虑到字符串所占长度并将中文字符串进行编码后再计算。
具体可参考https://blog.csdn.net/excaliburrr/article/details/76794451
五、遍历字典
Python3中:
1.遍历keys:
或者
2.遍历values:
3.遍历keys,values:
Python2中稍有区别,items()、keys()、values()换成iteritems()、iterkeys()、itervalues()。
六、datetime模块timedelta类的使用
timedelta对象表示连个不同时间之间的差值, 这个差值的单位可以是:天、秒、微秒、毫秒、分钟、小时、周。
如果使用time模块对时间进行算术运行,只能将字符串格式的时间 和 struct_time格式的时间对象 先转换为时间戳格式,然后对该时间戳加上或减去n秒,最后再转换回struct_time格式或字符串格式,这显然很不方便。而datetime模块提供的timedelta类可以让我们很方面的对datetime.date, datetime.time和datetime.datetime对象做算术运算,且两个时间之间的差值单位也更加容易控制。
datetime.timedelta类的定义:
所有参数都是默认参数,因此都是可选参数。参数的值可以是整数或浮点数,也可以是正数或负数。内部值存储days、seconds 和 microseconds,其他所有参数都将被转换成这3个单位:
- 1毫秒转换为1000微秒
- 1分钟转换为60秒
- 1小时转换为3600秒
- 1周转换为7天
然后对这3个值进行标准化,使得它们的表示是唯一的:
- microseconds : [0, 999999]
- seconds : [0, 86399]
- days : [-999999999, 999999999]
类属性:
类属性名称 | 描述 |
---|---|
timedelta.min | timedelta(-999999999) |
timedelta.max | timedelta(days=999999999, hours=23, minutes=59, seconds=59, microseconds=999999) |
timedelta.resolution | timedelta(microseconds=1) |
实例方法和属性:
实例方法/属性名称 | 描述 |
---|---|
td.days | 天 [-999999999, 999999999] |
td.seconds | 秒 [0, 86399] |
td.microseconds | 微秒 [0, 999999] |
td.total_seconds() | 时间差中包含的总秒数,等价于: td / timedelta(seconds=1) |
方法/属性 | 描述 |
---|---|
datetime.datetime.now() | 返回当前本地时间(datetime.datetime对象实例) |
datetime.datetime.fromtimestamp(timestamp) | 返回指定时间戳对应的时间(datetime.datetime对象实例) |
datetime.timedelta() | 返回一个时间间隔对象,可以直接与datetime.datetime对象做加减操作 |