프롬프트
프롬프트 영역으로 마우스를 옮기고 Copy 버튼을 누르면 클립보드에 프롬프트의 내용이 복사됩니다.마이크로파이썬에서 f-string의 사용법을 알려줘.
AI가 만든 결과
MicroPython에서도 일반 Python(CPython)과 유사한 형태의 f-string(Formatted String Literal)을 지원합니다. 다만 MicroPython 버전에 따라 일부 기능(복잡한 표현식·포맷 사양 등)은 제한될 수 있으니, 사용 중인 버전에서 동작 여부를 꼭 확인해야 합니다. 아래는 기본적인 사용 예시와 주의사항을 정리한 것입니다.
1. 기본 문법
f-string을 사용하면, 문자열 리터럴 안에서 { }
로 감싼 표현식을 바로 평가하여 삽입할 수 있습니다.
name = "Alice" age = 25 # 기본 f-string 사용 print(f"Hello, {name}. You are {age} years old.") # 출력 예: Hello, Alice. You are 25 years old.
- 문자열 앞에
f
(소문자 혹은 대문자F
)를 붙이면 f-string으로 인식됩니다. - 중괄호
{ }
안에는 변수, 간단한 연산, 함수 호출 등을 넣을 수 있습니다.
2. 간단한 표현식 삽입
중괄호 안에서 간단한 산술 연산이나 함수 호출을 해도 됩니다.
x = 5 y = 2 print(f"{x} + {y} = {x + y}") # 출력 예: 5 + 2 = 7 def double(n): return n * 2 print(f"double(10) = {double(10)}") # 출력 예: double(10) = 20
- MicroPython 1.13+ 등 비교적 최신 버전에서는 간단한 표현식이 잘 동작합니다.
- 그러나 복잡한 람다 함수 또는 길고 복잡한 표현식 등은 버전에 따라 지원이 안 되거나, 메모리 제한 문제로 오류가 날 수 있습니다.
3. 서식 지정(포매팅) 제한 사항
일반 파이썬의 f-string은 아래와 같이 포맷 사양(format specification)을 지원합니다.
number = 42 print(f"Number: {number:04d}") # 0042
- MicroPython에서도 어느 정도 동작하긴 하지만, 버전에 따라 일부 포맷 문자열이 작동하지 않을 수 있습니다.
- 정수나 실수에 대한 기본 포맷(예:
{:d}
,{:f}
) 정도는 지원하지만, 복잡한 형식 지정(예: 천 단위 구분자,{:,}
등)은 제한이 있을 수 있습니다.
예시:
val = 42 # 간단한 정수 포매팅 print(f"{val:04d}") # 0042 # 실수 포매팅 (소수점 자리수 제한) flt = 3.14159 print(f"{flt:.2f}") # 3.14
주의: 일부 구버전(예: MicroPython 1.9.x ~ 1.10.x 등)은 f-string 자체를 지원하지 않거나, 포맷 지정 문법을 제한적으로만 지원할 수 있습니다.
4. 내부 구현 및 메모리 고려
- MicroPython은 일반 파이썬에 비해 메모리가 훨씬 제한된 환경(ESP8266, ESP32 등 마이크로컨트롤러)에서 동작하므로,
문자열 연산과 동적 메모리 할당을 최소화하는 것이 좋습니다. - 짧은 문자열이나 간단한 표현식을 f-string으로 한 번에 처리하는 것은 괜찮지만,
반복문 안에서 큰 문자열을 여러 번 생성하거나 불필요한 문자열 조합을 계속하면 성능 저하나 메모리 부족이 일어날 수 있습니다.
5. 예시 코드
아래는 ESP32/ESP8266 등 MicroPython 환경에서 f-string을 활용해 센서 값을 읽고, 화면에 출력하는 간단한 예시입니다.
import time # 가상 센서값을 반환하는 변수 예시 sensor_value = 37.29 i = 0 while i < 5: # f-string을 사용해 센서 값을 소수점 2자리까지 표현 print(f"Sensor Value: {sensor_value:.2f}, loop count: {i}") sensor_value += 0.1 i += 1 time.sleep(1)
f"Sensor Value: {sensor_value:.2f}, loop count: {i}"
:
센서값은 소수점 아래 2자리까지 표시, 루프 카운트는 정수 그대로 표시합니다.
6. 정리
- MicroPython에서의 f-string은 기본적으로 CPython 3.6+ 문법과 유사하지만, 버전에 따라 지원 범위에 차이가 있습니다.
- 중괄호 안 표현: 변수 참조, 간단한 연산·함수 호출 등은 대체로 지원됩니다.
- 포맷 사양: 간단한 형태(
:d
,:f
,:.2f
등)는 대체로 가능하나, 고급 포맷은 제한될 수 있습니다. - 메모리 제약: 마이크로컨트롤러 환경에서 큰 문자열을 자주 생성할 경우, 성능과 메모리 사용량에 주의해야 합니다.
결국 최신 MicroPython 버전을 사용하면 대부분의 기본 f-string 기능은 문제없이 쓸 수 있으나, 고급 포매팅이나 아주 복잡한 표현식은 구동 환경에 따라 동작이 달라질 수 있으니 유의해 주세요.