了解python中的此类。运算符%并格式化浮点
让我困惑的是这一部分了解python中的此类。运算符%并格式化浮点,python,class,operators,Python,Class,Operators,让我困惑的是这一部分 class FormatFloat(FormatFormatStr): def __init__(self, precision=4, scale=1.): FormatFormatStr.__init__(self, '%%1.%df'%precision) self.precision = precision self.scale = scale def toval(self, x): i
class FormatFloat(FormatFormatStr):
def __init__(self, precision=4, scale=1.):
FormatFormatStr.__init__(self, '%%1.%df'%precision)
self.precision = precision
self.scale = scale
def toval(self, x):
if x is not None:
x = x * self.scale
return x
def fromstr(self, s):
return float(s)/self.scale
这是否意味着在1之前输入两次精度,在df之前输入一次精度?df代表你所知道的任何东西吗?我在其他地方看不到它,甚至在它的祖先身上也看不到,从这里可以看出:
FormatFormatStr.__init__(self, '%%1.%df'%precision)
另外,我把这个放进我的Ipython中,得到这个:
class FormatFormatStr(FormatObj):
def __init__(self, fmt):
self.fmt = fmt
def tostr(self, x):
if x is None: return 'None'
return self.fmt%self.toval(x)
class FormatObj:
def tostr(self, x):
return self.toval(x)
def toval(self, x):
return str(x)
def fromstr(self, s):
return s
[53]中的x=FormatFloat(.234324325435)
In[54]:x
出[54]:
我认为它会将精度降低到4,并将比例降低到1。但它却被储存在我的记忆中。我能取回它看看它对号码有什么影响吗
谢谢大家,你帮了大忙 在('%%1.%df'%precision)
中,第一个%%
生成一个文本%
,%d
替换为precision
,并按字面插入f
。下面是一个可能的结果示例:
In [53]: x = FormatFloat(.234324234325435)
In [54]: x
Out[54]: <matplotlib.mlab.FormatFloat instance at 0x939d4ec>
为了使用FormatFloat
类,您可以尝试以下方法:
>>> '%%1.%df' % 4
'%1.4f'
在python格式的字符串中,“%%”表示“插入文字百分比符号”--用行话来说,第一个%'转义'第二个。所讨论的字符串,“%%1.%df”%precision
正在使用格式字符串生成格式字符串,唯一被替换的是“%d”。在交互式提示下尝试:
formatter = FormatFloat(precision = 4)
print formatter.tostr(0.2345678)
类FormatFloat
没有定义\uuuuurepr\uuuuuuuu
、\uuuuuu str\uuuuuuuuu
或\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuunicode>(用于类型强制的“魔法”方法),因此,当您在交互式控制台中打印值时,您就可以得到实例的标准。要获取字符串值,可以调用tostr()
方法(在父类上定义):
%%转换为%
1按原样打印
%d以十进制数字形式打印精度
f是逐字印刷的
>>> print "%%1.%df" % 5
'%1.5f'
>>> ff = FormatFloat(.234324234325435)
>>> ff.tostr()
0.234
>>> precision=4
>>> '%%1.%df'%precision
'%1.4f'