[파이썬 기초] 변수, 동적 타이핑, 자료형 개요

2026. 6. 15. 07:00·BI&Programming-Tools/Python

변수

변수는 데이터를 저장하는 이름이 붙은 공간입니다.

파이썬에서는 변수를 선언할 때 타입을 명시하지 않고 바로 값을 할당합니다.

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
'BI&Programming-Tools/Python' 카테고리의 다른 글
  • [파이썬 기초] 리스트와 튜플
  • [파이썬 기초] 숫자와 문자열 다루기
  • [파이썬 기초] 가상환경과 pip 패키지 관리
  • [파이썬 기초] 파이썬을 쓰는 이유와 환경 세팅
데이터로 읽는 생명
데이터로 읽는 생명
is-note 님의 블로그 입니다.
  • 데이터로 읽는 생명
    In Silico Note
    데이터로 읽는 생명
  • 전체
    오늘
    어제
    • 분류 전체보기 (190)
      • Bio-Knowledge (16)
        • 분자생물학 & 유전학 기초 (0)
        • 전사체학 & 유전자 발현 (0)
        • 구조생물학 & 단백질 (0)
        • 싱글셀 & 다중오믹스 (0)
        • 임상유전학 & 질환 데이터 (0)
      • Programming (4)
        • API (4)
      • BI&Programming-Tools (111)
        • File Formats (14)
        • Linux & Bash Script (38)
        • Python (35)
        • R (11)
        • 통계 (8)
        • Pipeline Manager (0)
        • Etc (5)
      • Bio Data Analysis (28)
        • 서열분석개론 (6)
        • WGS(Whole Genome Seq) (11)
        • WES(Whole Exome Seq) (2)
        • RNA-Seq (4)
        • Metagenome (2)
        • Non-human Resequencing (1)
        • 임상유전체 분석 (1)
        • Multi-Omics (1)
      • Bio-Trends & Tech (1)
      • 코딩테스트 연습 (30)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    wgs
    파이썬
    분자생물학
    R
    파일포맷
    파이썬기초
    fasta
    리눅스기초
    FASTQ
    R기초
    파이썬연습
    bioinformatics
    GATK
    리눅스
    ngs
    코딩테스트
    통계
    생물정보학
    데이터분석
    유전체분석
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.6
데이터로 읽는 생명
[파이썬 기초] 변수, 동적 타이핑, 자료형 개요
상단으로

티스토리툴바