programing

인쇄란(f"...)

lastmoon 2023. 8. 10. 19:07
반응형

인쇄란(f"...)

XML 파일을 입력하고 XML 파일을 출력하는 파이썬 스크립트를 읽고 있습니다.하지만 저는 인쇄 구문을 이해하지 못합니다.누가 설명 좀 해주시겠어요?fprint(f"...")그래요?

args = parser.parser_args()

print(f"Input directory: {args.input_directory}")
print(f"Output directory: {args.output_directory}")

f형식화된 문자열 리터럴을 의미하며 새로 추가되었습니다.Python 3.6.


형식화된 문자열 리터럴 또는 f-string은 다음과 같이 접두사가 붙은 문자열 리터럴입니다.f또는F이 문자열에는 대체 필드가 포함될 수 있습니다. 대체 필드는 중괄호로 구분된 식입니다.{}다른 문자열 리터럴은 항상 일정한 값을 가지지만 형식이 지정된 문자열은 실제로 런타임에 평가되는 식입니다.


형식이 지정된 문자열 리터럴의 몇 가지 예:

>>> 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=2023, month=1, day=27)
>>> f"{today:%B %d, %Y}" # using date format specifier
January 27, 2023

>>> number = 1024
>>> f"{number:#0x}" # using integer format specifier
0x400

Python 3.6에서는 포맷된 문자열 리터럴인 f-string이 도입되었습니다(PEP 498).간단히 말해서, 이것은 더 읽기 쉽고 빠른 문자열을 포맷하는 방법입니다.

예:

agent_name = 'James Bond'
kill_count = 9


# old ways
print("%s has killed %d enemies" % (agent_name,kill_count))

print('{} has killed {} enemies'.format(agent_name,kill_count))
print('{name} has killed {kill} enemies'.format(name=agent_name,kill=kill_count))
    

# f-strings way
print(f'{agent_name} has killed {kill_count} enemies')

f또는F문자열 앞에서 Python에게 {} 내부의 값, 식 또는 인스턴스를 살펴보고 변수 값 또는 결과가 있으면 이를 대체하도록 합니다.f 포맷의 가장 좋은 점은 {}에서 멋진 작업을 할 수 있다는 것입니다.{kill_count * 100}.

인쇄 등을 사용하여 디버깅할 수 있습니다.

print(f'the {agent_name=}.')
# the agent_name='James Bond'

제로 패딩, 플로트 및 백분율 반올림과 같은 형식 지정이 더 쉬워집니다.

print(f'{agent_name} shoot with {9/11 : .2f} or {9/11: .1%} accuracy')
# James Bond shoot with  0.82 or  81.8% accuracy 

더 멋진 것은 둥지를 틀고 서식을 만드는 능력입니다.예제 날짜


from datetime import datetime

lookup = {
    '01': 'st',
    '21': 'st',
    '31': 'st',
    '02': 'nd',
    '22': 'nd',
    '03': 'rd',
    '23': 'rd'
}

print(f"{datetime.now(): %B %d{lookup.get('%B', 'th')} %Y}")

# April 14th 2022

예쁜 포맷도 더 쉽습니다.

tax = 1234

print(f'{tax:,}') # separate 1k \w comma
# 1,234

print(f'{tax:,.2f}') # all two decimals 
# 1,234.00

print(f'{tax:~>8}') # pad left with ~ to fill eight characters or < other direction
# ~~~~1234

print(f'{tax:~^20}') # centre and pad
# ~~~~~~~~1234~~~~~~~~

__format__이 기능을 사용하여 펑크를 낼 수 있습니다.


class Money:
    
    def __init__(self, currency='€'):
        self.currency = currency
        
    def __format__(self, value):
        
        return f"{self.currency} {float(value):.2f}"
        
        
tax = 12.34
money = Money(currency='$')
print(f'{money: {tax}}')
# $ 12.34

더 많은 것이 있습니다.판독값:

f 문자열은 또한 문자열에 변수를 삽입하고 그것을 부분적으로 만드는 리터럴 문자열로 알려져 있습니다.

x = 12
y = 10

word_string = x + ' plus ' + y + 'equals: ' + (x+y)

대신, 당신은 할 수 있습니다.

x = 12
y = 10

word_string = f'{x} plus {y} equals: {x+y}'
output: 12 plus 10 equals: 22

이것은 또한 문자열이 쓰여진 대로 정확히 수행되기 때문에 간격에 도움이 될 것입니다.

다음이 앞에 붙은 문자열'f'또는'F'다음과 같이 표현을 씁니다.{expression}문자열 형식을 지정하는 방법으로, 문자열 내부에 Python 식의 값을 포함할 수 있습니다.

다음 코드를 예로 들어 보겠습니다.

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

출력:

length = 4 width = 5 area = 20
length = 4 width = 5 area = 20
length = {l} width = {w} area = {area(l,w)}
args = parser.parser_args()

print(f"Input directory: {args.input_directory}")
print(f"Output directory: {args.output_directory}")

와 동일합니다.

print("Input directory: {}".format(args.input_directory))
print("Output directory: {}".format(args.output_directory))

그것은 또한 같은 것입니다.

print("Input directory: "+args.input_directory)
print("Output directory: "+args.output_directory)

python의 f-string을 사용하면 문자열 템플릿을 사용하여 인쇄할 데이터를 포맷할 수 있습니다.
아래의 예는 당신이 명확하게 하는 데 도움이 될 것입니다.

f-string 포함

name = 'Niroshan'
age  = 25;
print(f"Hello I'm {name} and {age} years young")

안녕하세요 저는 25살 어린 니로샨입니다.


f-string 미포함

name = 'Niroshan'
age  = 25;
print("Hello I'm {name} and {age} years young")

안녕하세요 저는 {name}이고 {age}살입니다.

f 함수는 내용의 다른 위치로 데이터를 전송하는 것입니다.대부분 변경 가능한 데이터를 사용했습니다.

클래스 메소드(): 정의(self,F,L,E,S,T): self.이름=F셀프.LastName=Lelf.Email=Eself.급여=스스로.시간 = T

    def  Salary_Msg(self):
        #f is called function f
        #next use {write in}
        return f{self.firstname} {self.Lastname} earns AUD {self.Salary}per {self.Time} "

언급URL : https://stackoverflow.com/questions/57150426/what-is-printf

반응형