2019-11-24 python之_与python float类型计算

_xx 单下划线开头

Python中没有真正的私有属性或方法,可以在你想声明为私有的方法和属性前加上单下划线,以提示该属性和方法不应在外部调用.如果真的调用了也不会出错,但不符合规范.

Python中不存在真正的私有方法。为了实现类似于c++中私有方法,可以在类的方法或属性前加一个“_”单下划线,意味着该方法或属性不应该去调用,它并不属于API。

"__"双下划线

这个双下划线更会造成更多混乱,但它并不是用来标识一个方法或属性是私有的,真正作用是用来避免子类覆盖其内容。

"xx"前后各双下划线

当你看到"this"的时,就知道不要调用它。为什么?因为它的意思是它是用于Python调用的
xx”经常是操作符或本地函数调用的magic methods。在上面的例子中,提供了一种重写类的操作符的功能。

在特殊的情况下,它只是python调用的hook。例如,init()函数是当对象被创建初始化时调用的;new()是用来创建实例。

python float类型数据计算有误

代码:

def tumple_str_to_list(tumple_str):
    step = tumple_str[1:-1].split(",")
    start = float(step[0])
    end = float(step[1])
    interval = float(step[2])
    num = start
    num_list = []
    while num < end:
        num_list.append(num)
        num = num + interval
    return num_list
num = tumple_str_to_list("(0,1,0.1)")
print(num)
结果:[0.0, 0.1, 0.2, 0.30000000000000004, 0.4, 0.5, 0.6, 0.7, 0.7999999999999999, 0.8999999999999999, 0.9999999999999999]

修改方法:使用decimal

def tumple_str_to_list(tumple_str):
    step = tumple_str[1:-1].split(",")
    start = Decimal(step[0])
    end = Decimal(step[1])
    interval = Decimal(step[2])
    num = start
    num_list = []
    while num < end:
        num_list.append(float(num))
        num = num + interval
    return num_list

num = tumple_str_to_list("(0,1,0.1)")
print(num)
结果:[0.0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9]
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容