Python format()函数

时间:2020-02-23 14:42:43  来源:igfitidea点击:

Python format()函数用于根据提供的格式规范将给定的对象转换为字符串表示形式。

Python格式()

Python format()函数语法为:

format(value[, format_spec])

该函数调用"值"对象的__format __()方法。
我们可以为我们的自定义类定义此函数,以对其使用format()函数。

一些数字格式选项是:

  • ‘+’–符号应同时使用正数和负数。

  • ‘-’–符号只能与负数一起使用,这是默认行为。

  • %–乘以100并以百分比显示

  • " b"," o"," x"," X" –将整数转换为二进制,八进制和十六进制格式。
    小写字母将用于" x",大写字母将与" X"一起使用。
    这些仅适用于整数。

  • " e"," E"," f"," F" –与浮点数一起使用,分别用于指数表示法和定点表示法

让我们看一些使用format()函数和数字的示例。

# integers
print(format(10, '+'))
print(format(15, 'b'))

print(format(15, 'x'))
print(format(15, 'X'))

# float
print(format(.2, '%'))
print(format(10.5, 'e'))
print(format(10.5, 'e'))
print(format(10.5345678, 'f'))
print(format(10.5, 'F'))

输出:

+10
1111
f
F
20.000000%
1.050000e+01
1.050000e+01
10.534568
10.500000

自定义对象的Python format()函数

让我们看看如何将format()函数与自定义对象一起使用。
我们将创建一个类并为其定义__format __()函数。
该函数必须返回字符串,否则我们将得到错误。

class Data:
  id = 0

  def __init__(self, i):
      self.id = i

  def __format__(self, format_spec):
      print('__format__ method called')
      if format_spec == 's':
          return "Data[id=%s]" % self.id
      if format_spec == 'i':
          return str(self.id)
      else:
          return 'invalid format spec'

请注意,我正在根据输入格式规范来格式化对象。
如果提供了无法识别的格式规范,我将返回错误字符串。
我们还可以抛出异常,以由调用代码处理。

d = Data(20)
print(format(d, 's'))
print(format(d, 'i'))
print(format(d, 'x'))

输出:

__format__ method called
Data[id=20]
__format__ method called
20
__format__ method called
invalid format spec