Python 2.6 wprowadził str.format()
metodę z nieco inną składnią niż istniejący %
operator. Które jest lepsze i na jakie sytuacje?
Poniżej zastosowano każdą metodę i ma ten sam wynik, więc jaka jest różnica?
#!/usr/bin/python sub1 = "python string!" sub2 = "an arg" a = "i am a %s" % sub1 b = "i am a {0}".format(sub1) c = "with %(kwarg)s!" % {'kwarg':sub2} d = "with {kwarg}!".format(kwarg=sub2) print a # "i am a python string!" print b # "i am a python string!" print c # "with an arg!" print d # "with an arg!"
Ponadto, kiedy formatowanie łańcucha występuje w Pythonie? Na przykład, jeśli mój poziom rejestrowania jest ustawiony na WYSOKI, czy nadal będę otrzymywać trafienie za wykonanie następującej
%
operacji? A jeśli tak, to czy można tego uniknąć?log.debug("some debug info: %s" % some_info)
%
częściej używam starszego stylu, ponieważ jeśli nie potrzebujesz ulepszonych możliwości format()
stylu, %
styl jest często o wiele wygodniejszy.
format()
stylu formatowania i starszego %
stylu formatowania .