• Skip to primary navigation
  • Skip to main content

IoTmaker

사물인터넷에 대한 모든 것 여기서 해결하셔요!

  • 홈
  • 책:마이크로파이썬을 활용한 사물인터넷
  • 책:따라 하면서 배우는 사물인터넷
  • 온라인 교육 코스
  • 새로운 소식
  • 의견보내기
  • 내 수강정보
  • 로그인
  • 회원가입

AI 프롬프트 활용 5-1: 마이크로파이썬에서 f-string의 사용법

마이크로파이썬 > AI 프롬프트

프롬프트

  프롬프트 영역으로 마우스를 옮기고 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 기능은 문제없이 쓸 수 있으나, 고급 포매팅이나 아주 복잡한 표현식은 구동 환경에 따라 동작이 달라질 수 있으니 유의해 주세요.

Copyright © 2025 ·로그인