변수
변수는 데이터를 저장하는 이름이 붙은 공간입니다.
파이썬에서는 변수를 선언할 때 타입을 명시하지 않고 바로 값을 할당합니다.
name = "sample_01"
count = 100
ratio = 0.85
is_valid = True
변수 이름은 다음 규칙을 따릅니다.
- 문자, 숫자, 언더스코어(_)로 구성
- 숫자로 시작할 수 없음
- 대소문자를 구분 (count와 Count는 다른 변수)
- 파이썬 예약어(if, for, True 등)는 변수명으로 사용 불가
파이썬 관례상 변수명은 소문자와 언더스코어를 조합한 스네이크 케이스(snake_case)를 사용합니다.
# 권장
sample_count = 10
file_path = "/data/sample.fastq"
# 비권장
sampleCount = 10 # 카멜 케이스 (클래스명에 사용)
동적 타이핑
파이썬은 동적 타이핑(dynamic typing) 언어입니다.
변수에 타입을 미리 지정하지 않으며, 할당된 값에 따라 타입이 자동으로 결정됩니다.
또한 같은 변수에 다른 타입의 값을 재할당할 수 있습니다.
x = 10 # int
x = "hello" # str (재할당 가능)
x = [1, 2, 3] # list
현재 변수의 타입은 type() 함수로 확인합니다.
x = 3.14
print(type(x))
# <class 'float'>
genes = ["BRCA1", "TP53", "EGFR"]
print(type(genes))
# <class 'list'>
동적 타이핑은 코드를 빠르게 작성할 수 있다는 장점이 있지만, 의도하지 않은 타입이 들어와도 바로 오류가 발생하지 않아 디버깅이 어려울 수 있습니다.
이 문제를 보완하기 위해 타입 힌트(type hint)를 사용하기도 합니다.
# 타입 힌트: 실행에는 영향을 주지 않지만 가독성과 IDE 지원에 도움
def get_sequence(sample_id: str) -> str:
pass
count: int = 100
타입 힌트는 실제 타입을 강제하지는 않으며, 코드 가독성을 높이고 정적 분석 도구(mypy 등)와 함께 사용할 때 효과적입니다.
자료형 개요
파이썬의 기본 자료형은 다음과 같습니다.
| 자료형 | 분류 | 예시 |
| int | 정수 | 10, -3, 0 |
| float | 부동소수점 | 3.14, -0.5, 1e-6 |
| bool | 불리언 | True, False |
| str | 문자열 | "hello", 'ATCG' |
| list | 리스트 | [1, 2, 3] |
| tuple | 튜플 | (1, 2, 3) |
| dict | 딕셔너리 | {"key": "value"} |
| set | 집합 | {1, 2, 3} |
| NoneType | 값 없음 | None |
int / float
read_count = 1500000 # int
gc_content = 0.512 # float
scientific = 1.5e-9 # float (1.5 × 10⁻⁹)
# 타입 변환
print(int(3.9)) # 3 (소수점 이하 버림)
print(float(10)) # 10.0
int와 float을 연산하면 결과는 float이 됩니다.
print(3 + 1.0) # 4.0
print(7 / 2) # 3.5 (파이썬 3에서 /는 항상 float 반환)
print(7 // 2) # 3 (정수 나눗셈)
print(7 % 2) # 1 (나머지)
bool
True와 False 두 가지 값만 가집니다.
파이썬에서 bool은 int의 서브클래스이며, True는 1, False는 0으로 처리됩니다.
print(True + 1) # 2
print(False + 5) # 5
다음 값들은 False로 평가됩니다.
bool(0) # False
bool(0.0) # False
bool("") # False
bool([]) # False
bool(None) # False
나머지 대부분의 값은 True로 평가됩니다.
str
문자열은 작은따옴표(')와 큰따옴표(") 모두 사용할 수 있습니다.
여러 줄 문자열은 삼중 따옴표를 사용합니다.
seq = "ATCGATCG"
sample = 'sample_01'
# 여러 줄 문자열
description = """
This is a FASTA sequence.
Gene: BRCA1
"""
문자열은 인덱싱과 슬라이싱이 가능합니다.
seq = "ATCGATCG"
print(seq[0]) # A (첫 번째 문자)
print(seq[-1]) # G (마지막 문자)
print(seq[2:5]) # CGA (인덱스 2부터 4까지)
print(seq[:4]) # ATCG (처음부터 인덱스 3까지)
print(len(seq)) # 8
list
순서가 있는 가변(mutable) 컬렉션입니다. 다양한 타입을 혼합해서 담을 수 있습니다.
samples = ["sample_01", "sample_02", "sample_03"]
counts = [150, 230, 95, 410]
print(samples[0]) # sample_01
print(counts[-1]) # 410
print(counts[1:3]) # [230, 95]
samples.append("sample_04") # 요소 추가
samples.remove("sample_01") # 요소 삭제
print(len(samples)) # 길이 확인
tuple
순서가 있는 불변(immutable) 컬렉션입니다.
한번 생성하면 값을 변경할 수 없습니다.
coordinate = (37.5, 127.0)
rgb = (255, 128, 0)
print(coordinate[0]) # 37.5
변경이 필요 없는 데이터, 함수에서 여러 값을 반환할 때 자주 사용합니다.
def get_stats(data):
return min(data), max(data), sum(data) / len(data)
lo, hi, mean = get_stats([10, 20, 30, 40])
dict
키(key)와 값(value)의 쌍으로 데이터를 저장하는 자료형입니다.
키는 중복될 수 없습니다.
sample_info = {
"id": "sample_01",
"species": "Homo sapiens",
"read_count": 15000000,
"paired": True
}
print(sample_info["id"]) # sample_01
print(sample_info.get("tissue", "unknown")) # 키가 없을 때 기본값 반환
sample_info["coverage"] = 30.5 # 새 키 추가
[]로 존재하지 않는 키에 접근하면 KeyError가 발생합니다.
키 존재 여부가 불확실할 때는 .get()을 사용하는 것이 안전합니다.
set
중복이 없는 값의 집합입니다. 순서가 없으며 집합 연산(합집합, 교집합, 차집합)을 지원합니다.
genes_a = {"BRCA1", "TP53", "EGFR"}
genes_b = {"TP53", "KRAS", "EGFR"}
print(genes_a & genes_b) # 교집합: {'TP53', 'EGFR'}
print(genes_a | genes_b) # 합집합: {'BRCA1', 'TP53', 'EGFR', 'KRAS'}
print(genes_a - genes_b) # 차집합: {'BRCA1'}
중복을 제거할 때도 자주 활용합니다.
gene_list = ["TP53", "EGFR", "TP53", "BRCA1", "EGFR"]
unique_genes = list(set(gene_list))
None
값이 없음을 나타내는 특수한 자료형입니다. 다른 언어의 null에 해당합니다.
result = None
if result is None:
print("결과 없음")
None과의 비교는 == 대신 is를 사용하는 것이 권장됩니다.
'BI&Programming-Tools > Python' 카테고리의 다른 글
| [파이썬 기초] 딕셔너리, 셋, 불리언 (0) | 2026.06.15 |
|---|---|
| [파이썬 기초] 리스트와 튜플 (0) | 2026.06.15 |
| [파이썬 기초] 숫자와 문자열 다루기 (0) | 2026.06.15 |
| [파이썬 기초] 가상환경과 pip 패키지 관리 (0) | 2026.06.15 |
| [파이썬 기초] 파이썬을 쓰는 이유와 환경 세팅 (0) | 2026.06.15 |
