[Python TIL] 🐍 Python 기초: 전역변수, 지역변수부터 모듈, 패키지, 웹 요청까지!

KiwiChipKiwiChip
4 min read

파이썬을 처음 배우다 보면 헷갈리는 개념들이 있다. 예를 들어 전역 변수와 지역 변수, 함수와 메서드, 인자와 매개변수, 그리고 모듈과 패키지다. 이 글에서는 이 헷갈리는 개념들을 쉬운 설명과 실습 예제를 통해 명확히 이해해 보자.


1️⃣ 전역 변수와 지역 변수, 어디서 선언했느냐가 중요하다!

파이썬에서 변수의 생명주기는 어디에서 선언되었는지에 따라 달라진다.

  • 지역 변수(Local Variable) : 함수 내부에서 선언되며, 함수가 끝나면 사라진다.

  • 전역 변수(Global Variable) : 함수 외부에서 선언되며, 프로그램 전체에서 사용 가능하다.

🧠 비유: "밥 먹었어?"라는 말을 서울과 부산에서 각각 다르게 말하는 것과 같다. 변수도 어디서 쓰이느냐에 따라 다르게 작동한다.

✏️ 예시 코드

# 전역 변수
greeting = "밥 먹었어?"

print("서울 :", greeting)

def busan():
    # 지역 변수
    greeting = "밥 뭇나?"
    print("부산 :", greeting)

# 함수 실행
busan()

# 다시 전역 변수 출력
print("다시 서울 :", greeting)

🧾 실행 결과

서울 : 밥 먹었어?
부산 : 밥 뭇나?
다시 서울 : 밥 먹었어?

🔍 정리: 함수 안에서 같은 이름의 변수를 다시 선언해도, 이는 지역 변수로 간주되기 때문에 전역 변수에는 영향을 주지 않는다.


2️⃣ 함수와 메서드의 차이? 클래스가 관여하느냐의 문제!

파이썬에서 함수(function)메서드(method)는 모두 특정 기능을 수행하는 코드 블록이지만, 소속에 따라 다르게 불린다.

구분정의예시
함수독립적으로 정의된 기능def greet():
메서드클래스에 종속된 함수str.upper()

✏️ 예시 코드

# 함수
def hello():
    return "Hello!"

# 메서드
name = "python"
print(name.upper())  # 메서드: 문자열을 대문자로 변환

🧾 실행 결과

HELLO!
PYTHON

☝️ 정리: 클래스 내부에 정의된 함수가 메서드이다. 문자열의 .upper(), 리스트의 .append() 등은 모두 메서드다.

자주 묻는 질문 (FAQs)

질문

답변

함수랑 메서드는 뭐가 달라요?

함수는 독립적 / 메서드는 객체에 딸려 있는 함수

지역 변수는 함수 밖에서 못 써요?

맞아요. 함수 끝나면 사라져요

전역 변수 쓰면 안 돼요?

가능은 하지만, 복잡해지므로 가급적 피하는 게 좋아요

메서드 이름은 외워야 하나요?

아니요. 필요한 순간 dir(자료형)이나 공식 문서 보면 돼요


3️⃣ 인자(argument)와 매개변수(parameter), 비슷해 보여도 다르다!

함수를 다룰 때 자주 마주치는 두 단어, 바로 매개변수인자이다.

  • 매개변수(Parameter) : 함수를 정의할 때 사용하는 변수

  • 인자(Argument) : 함수를 호출할 때 전달하는 값

✏️ 예시 코드

def plusDouble(a, b):  # a, b는 매개변수
    return 2 * (a + b)

# 3, 4는 인자
print(plusDouble(3, 4))

🧾 실행 결과

14

🎯 외우는 팁:

  • 파라미터(Parameter)는 정의할 때

  • 아규먼트(Argument)는 사용할 때


4️⃣ 모듈과 패키지, 효율적인 코드 관리를 위한 필수 개념

📈 함수 → 모듈로 가는 사고 전환

함수를 많이 만들다 보면

"이런 함수들 묶어서 따로 정리해두면 안 될까?"

→ ✅ 이게 바로 모듈(module) 개념!

📦 모듈(Module) : .py 파일 하나

모듈은 하나의 파이썬 파일로, 자주 사용하는 함수들을 정의해 두고 import로 불러와서 쓸 수 있다.

① 사용자 정의 모듈 만들기

cal.py

def plus(a, b):
    return a + b

main.py

import cal

print(cal.plus(3, 4))  # 7

🧮 자주 쓰는 모듈 예시: math, random

import math
print(math.pi)  # 원주율
print(math.e)   # 자연로그 밑
3.141592653589793
2.718281828459045
import random
print(random.randrange(1, 11))  # 1~10 사이의 랜덤한 정수

📁 패키지(Package) : 폴더로 모듈을 묶는 구조

패키지는 여러 모듈을 폴더 단위로 정리해주는 개념이다. 패키지 안에는 __init__.py 파일이 있어야 한다. (파이썬 3.3 이후는 없어도 동작하지만 관례적으로 넣는다.)

예시 구조:

project/
├── user/
│   ├── __init__.py
│   └── cal.py  # plus 함수 정의됨
└── main.py

🛠 패키지 안의 모듈 사용법

방법 1: import로 전체 경로 불러오기

import user.cal
print(user.cal.plus(3, 4))

방법 2: from-import로 함수만 불러오기

from user.cal import plus
print(plus(3, 4))

⏰ time 모듈로 현재 시간 알아보기

import time
print(time.ctime())

🧾 실행 결과 예시

Tue Mar 26 12:34:56 2025

time.ctime()은 현재 시간을 "요일 월 일 시:분:초 연도" 형식으로 알려주는 함수이다.


📌urllib.request 모듈로 웹에서 데이터 가져오기

웹 페이지의 내용을 직접 가져오는 것도 파이썬으로 가능하다! 아래는 위키피디아에서 'Lorem Ipsum' 페이지를 가져오는 예제이다.

✏️ 실습 예제

from urllib import request  # request 모듈에서 함수 사용

url = "https://en.wikipedia.org/wiki/Lorem_ipsum"

# 웹 페이지 열고 → 읽고 → 문자열로 변환
temp1 = request.urlopen(url).read().decode("UTF-8")

# 가져온 결과 출력
print(temp1[:500])  # 너무 길어지지 않게 앞 500자만 출력

🧾 출력 예시 (일부)

<!DOCTYPE html>
<html class="client-nojs" lang="en" dir="ltr">
<head>
<meta charset="UTF-8"/>
<title>Lorem ipsum - Wikipedia</title>
...

📌 .urlopen()은 웹 페이지를 열고, .read()는 바이트 데이터를 읽으며, .decode()로 문자열로 바꾼다. 이 과정을 통해 HTML 문서를 텍스트로 가져올 수 있다.

📌 정리: 오늘 배운 핵심 개념 요약

개념설명
전역/지역 변수선언 위치에 따라 사용 범위가 달라짐
함수 vs 메서드메서드는 클래스에 속한 함수
매개변수/인자정의할 때는 매개변수, 호출할 때는 인자
모듈.py 파일 하나, import로 불러와 사용
패키지모듈들을 폴더 단위로 정리한 구조
대표 내장 모듈math, random, time 등 유용한 기능을 제공하는 표준 모듈

0
Subscribe to my newsletter

Read articles from KiwiChip directly inside your inbox. Subscribe to the newsletter, and don't miss out.

Written by

KiwiChip
KiwiChip

I'm currently learning Python and studying RAG (Retrieval-Augmented Generation).