Ik ben een python-script aan het lezen dat XML-bestanden invoert en een XML-bestand uitvoert. Ik begrijp echter de afdruksyntaxis niet. Kan iemand uitleggen wat F
in print(f"...")
doet?
args = parser.parser_args()
print(f"Input directory: {args.input_directory}")
print(f"Output directory: {args.output_directory}")
Antwoord 1, autoriteit 100%
De F
betekent Geformatteerde tekenreeks letterlijkeen het is nieuw in Python 3.6
.
Een opgemaakte letterlijke tekenreeksof f-stringis een letterlijke tekenreeks die
voorafgegaan door'F'
of'F'
. Deze strings kunnen vervanging bevatten
velden, dit zijn uitdrukkingen die worden gescheiden door accolades{}
. Terwijl
andere letterlijke tekenreeksen hebben altijd een constante waarde, opgemaakte tekenreeksen
zijn echt uitdrukkingen die tijdens runtime worden geëvalueerd.
Enkele voorbeelden van opgemaakte letterlijke tekenreeksen:
>>> name = "Fred"
>>> f"He said his name is {name}."
"He said his name is Fred."
>>> name = "Fred"
>>> f"He said his name is {name!r}."
"He said his name is Fred."
>>> f"He said his name is {repr(name)}." # repr() is equivalent to !r
"He said his name is Fred."
>>> width = 10
>>> precision = 4
>>> value = decimal.Decimal("12.34567")
>>> f"result: {value:{width}.{precision}}" # nested fields
result: 12.35
>>> today = datetime(year=2017, month=1, day=27)
>>> f"{today:%B %d, %Y}" # using date format specifier
January 27, 2017
>>> number = 1024
>>> f"{number:#0x}" # using integer format specifier
0x400
Antwoord 2, autoriteit 16%
de f-tekenreeks staat ook bekend als de letterlijke tekenreeks om een variabele in de tekenreeks in te voegen en er een deel van te maken in plaats van te doen
x = 12
y = 10
word_string = x + ' plus ' + y + 'equals: ' + (x+y)
in plaats daarvan kunt u
x = 12
y = 10
word_string = f'{x} plus {y} equals: {x+y}'
output: 12 plus 10 equals: 22
dit zal ook helpen met spatiëring omdat het precies zal doen zoals de string is geschreven
Antwoord 3, autoriteit 9%
In Python 3.6 werd de f-string geïntroduceerd (PEP 498). Kortom, het is een manier om je string op te maken die leesbaarder en sneller is.
Voorbeeld:
agent_name = 'James Bond'
kill_count = 9
# old ways
print('{0} has killed {1} enemies '.format(agent_name,kill_count))
# f-strings way
print(f'{agent_name} has killed {kill_count} enemies')
De F
of F
voor strings vertellen Python om naar de waarden binnen {} te kijken en deze te vervangen door de variabelenwaarden, indien aanwezig. Het beste van de is dat je coole dingen kunt doen in {}, b.v. {kill_count * 100}
.
Lezingen:
Antwoord 4, autoriteit 2%
args = parser.parser_args()
print(f"Input directory: {args.input_directory}")
print(f"Output directory: {args.output_directory}")
is hetzelfde als
print("Input directory: {}".format(args.input_directory))
print("Output directory: {}".format(args.output_directory))
het is ook hetzelfde als
print("Input directory: "+args.input_directory)
print("Output directory: "+args.output_directory)
Antwoord 5, autoriteit 2%
Een tekenreeks met het voorvoegsel 'F'
of 'F'
en het schrijven van uitdrukkingen als {expression}
is een manier om tekenreeksen op te maken, die kan de waarde van Python-expressies erin bevatten.
Neem deze code als voorbeeld:
def area(length, width):
return length * width
l = 4
w = 5
print("length =", l, "width =", w, "area =", area(l, w)) # normal way
print(f"length = {l} width = {w} area = {area(l,w)}") # Same output as above
print("length = {l} width = {w} area = {area(l,w)}") # without f prefixed
Uitvoer:
length = 4 width = 5 area = 20
length = 4 width = 5 area = 20
length = {l} width = {w} area = {area(l,w)}
Antwoord 6
Met
f-string in python kunt u gegevens opmaken voor afdrukken met behulp van tekenreekssjablonen.
Het onderstaande voorbeeld zal u helpen om het te verduidelijken
Met f-snaar
name = 'Niroshan'
age = 25;
print(f"Hello I'm {name} and {age} years young")
Hallo, ik ben Niroshan en 25 jaar jong
Zonder f-string
name = 'Niroshan'
age = 25;
print("Hello I'm {name} and {age} years young")
Hallo, ik ben {name} en {leeftijd} jaar jong