Как я могу напечатать значение аргумента с плавающей точкой по умолчанию в python 2.x? - PullRequest
2 голосов
/ 01 ноября 2011

Give follow python function определяют:

def Foo(a=0.1, b=1.6):
    pass

когда я вызываю 'help (Foo)' , я получу:

Help on function Foo in module __main__:
Foo(a=0.10000000000000001, b=1.6000000000000001)

Но я хочуget:

Help on function Foo in module __main__:
Foo(a=0.1, b=1.6)

дорогие все вы, есть ли способ напечатать это довольно?

Ответы [ 2 ]

1 голос
/ 01 ноября 2011

Это лучшее, что я могу найти в качестве обходного пути для более ранних версий:

def float_prettifier(digits):
    formatter = '%%.%df' % digits
    class pretty_float(float):
        def __str__(self): return formatter % self
        __repr__ = __str__
    return pretty_float

def Foo(a = float_prettifier(1)(0.1), b = float_prettifier(1)(1.6)): pass

help(Foo)
1 голос
/ 01 ноября 2011

В Python 2.7 это происходит по умолчанию.

Python 2.7.2 (v2.7.2:8527427914a2, Jun 11 2011, 15:22:34) 
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
Type "copyright", "credits" or "license()" for more information.
>>> def Foo(a=0.1, b=1.6):
    pass

>>> help(Foo)
Help on function Foo in module __main__:

Foo(a=0.1, b=1.6)

В более ранних версиях Python не было простого способа изменить это поведение.

...