python
Python이 숫자 데이터를 다루는 방식, 형 변환의 미묘한 차이, 일상적인 프로그래밍에 유용한 강력한 수학 유틸리티를 알아봅니다.
Python은 숫자를 세 가지 핵심 타입으로 분류합니다: 정수를 위한 int, 소수 부분을 가진 실수를 위한 float, 실수부와 허수부를 가진 숫자를 위한 complex입니다. 소수점의 유무가 int와 float을 구분합니다(예: 5는 정수, 5.0은 실수). 복소수는 x + yj 표기법을 따르며, 여기서 x는 실수부, y는 허수부입니다.
type()으로 값의 클래스를 확인하고, isinstance()로 특정 타입 멤버십을 검증할 수 있습니다. 예:
a = 5
print(type(a))
print(type(5.0))
c = 5 + 3j
print(c + 3)
print(isinstance(c, complex))
출력:
<class 'int'> <class 'float'> (8+3j) True
Python의 정수는 임의 정밀도를 가지며, 부동소수점 수는 약 15자리 십진수 정밀도를 유지합니다. 이진법, 16진법, 8진법 표현을 다루는 개발자를 위해 Python은 편리한 접두사를 제공합니다:
| 진법 | 접두사 |
|---|---|
| 이진법 | 0b 또는 0B |
| 8진법 | 0o 또는 0O |
| 16진법 | 0x 또는 0X |
예시:
# 출력: 107
print(0b1101011)
# 출력: 253 (251 + 2)
print(0xFB + 0b10)
# 출력: 13
print(0o15)
결과:
107 253 13
연산에 실수 피연산자가 포함되면 Python은 정수를 자동으로 실수로 승격시킵니다. 예:
>>> 1 + 2.0
3.0
명시적 변환도 int(), float(), complex()로 간단히 할 수 있으며, 문자열 파싱도 지원합니다:
>>> int(2.3)
2
>>> int(-2.8)
-2
>>> float(5)
5.0
>>> complex('3+5j')
(3+5j)
실수를 정수로 변환할 때 Python은 반올림이 아닌 소수 부분을 버림(truncate)합니다.
부동소수점 연산은 이진 표현의 한계로 의외의 결과를 낳을 수 있습니다. 예:
>>> (1.1 + 2.2) == 3.3
False
0.1 같은 숫자는 이진법으로 정확히 표현될 수 없어 연산 시 미세한 반올림 오차가 발생합니다. decimal 모듈은 임의 정밀도 십진법 연산을 제공해 이 문제를 완화합니다:
import decimal
print(0.1)
print(decimal.Decimal(0.1))
출력:
0.1 0.1000000000000000055511151231257827021181583404541015625
Decimal을 사용하면 유효 숫자와 정확한 십진 표현이 보존되어 금융 계산에 필수적입니다:
from decimal import Decimal as D
print(D('1.1') + D('2.2'))
print(D('1.2') * D('2.50'))
출력:
3.3 3.000
십진 연산은 이진 부동소수점보다 느리므로, 금전적 값, 설정 가능한 정밀도, 유효 숫자 제어가 필요한 시나리오에만 Decimal을 사용하세요.
fractions 모듈은 유리수 연산을 지원하며, 분자와 분모를 정수로 다뤄 정확한 계산을 가능하게 합니다:
import fractions
print(fractions.Fraction(1.5))
print(fractions.Fraction(5))
print(fractions.Fraction(1,3))
출력:
3/2 5 1/3
부동소수점에서 Fraction을 생성하면 이진 반올림으로 직관적이지 않은 결과가 나올 수 있으므로, 십진수에는 문자열 입력을 권장합니다:
import fractions
# float에서 생성
print(fractions.Fraction(1.1))
# 문자열에서 생성
print(fractions.Fraction('1.1'))
출력:
2476979795053773/2251799813685248 11/10
분수는 모든 산술 연산자를 지원합니다:
from fractions import Fraction as F
print(F(1, 3) + F(1, 3))
print(1 / F(5, 6))
print(F(-3, 10) > 0)
print(F(-3, 10) < 0)
출력:
2/3 6/5 False True
Python의 math 모듈은 삼각함수, 로그, 팩토리얼 등 다양한 함수를 제공합니다:
import math
print(math.pi)
print(math.cos(math.pi))
print(math.exp(10))
print(math.log10(1000))
print(math.sinh(1))
print(math.factorial(6))
출력:
3.141592653589793 -1.0 22026.465794806718 3.0 1.1752011936438014 720
난수 생성과 샘플링에는 random 모듈이 유용합니다:
import random
print(random.randrange(10, 20))
x = ['a', 'b', 'c', 'd', 'e']
print(random.choice(x))
random.shuffle(x)
print(x)
print(random.random())
샘플 출력 (값은 매번 다름):
18 e ['c', 'e', 'd', 'b', 'a'] 0.5682821194654443
두 모듈 모두 사용 가능한 모든 함수와 속성을 상세히 문서화하고 있습니다.
python
파이썬이란 무엇인가? 파이썬은 가독성과 간결한 문법으로 유명한 고수준 객체지향 프로그래밍 언어입니다. 동적 타이핑, 내장 자료구조, 모듈화된 아키텍처 덕분에 웹 서비스부터 과학 컴퓨팅까지 다양한 영역에서 빠른 애플리케이션 개발과 코드 재사용이 가능합니다. 파이썬의 명확성 강조는 초보자에게 이상적이며, 방대한 표준 라이브러리와 견고한 커뮤니티 지원 덕분에 엔터프라이즈와 연구 환경에서도 여전히 사랑받고 있습니다. 이 가이드에서 다룰 내용 파이썬의 정의와 강점 분야 루비의 정의와 틈새 강점 각 언어의 주요 특징 설계와
파이썬 2란 무엇인가? 파이썬 2는 파이썬 개선 제안(PEP)에 명시된 기술적 세부사항을 해결하며 개발을 간소화했습니다. 최종 릴리스인 파이썬 2.7은 2020년에 수명 종료(EOL)를 맞이했으며, 파이썬 소프트웨어 재단에서 더 이상 지원하지 않습니다. 여전히 레거시 시스템에서 사용되지만 미래는 불확실합니다. 기존 코드베이스에 대한 레거시 지원 Puppet, Ansible 등 구형 라이브러리 및 도구와의 호환성 아직 파이썬 3로 마이그레이션할 수 없는 조직 파이썬 3란 무엇인가? 2008년 12월 출시된 파이썬 3는