4. 파이썬의 입출력(Input / Output)
4-1. 함수(Function)
함수(Function)는 “입력값을 받아 처리하고 결과를 돌려주는 코드 덩어리” def로 정의하고, return으로 결과를 돌려준다.
| 구분 | 설명 | 예시 | 결과 |
| 함수 정의 | def 키워드로 함수 정의 | def add(a, b): return a + b |
함수 이름: add(변수) 매개변수: a, b |
| 함수 호출 | 정의한 함수를 실행 | add(3, 4) | 7 |
| 매개변수 (Parameter) |
함수 정의 시 받는 변수 | def add(a, b): ... | a, b가 매개변수 |
| 인자 (Argument) |
함수 호출 시 전달하는 값 | add(3, 4) | 3, 4가 인자 |
| return 문 | 함수 실행 결과를 호출한 곳으로 돌려줌 |
return a + b | 반환값 있음 |
| 반환값이 없는 함수 | return 생략 가능 (자동으로 None) |
def say(): print("Hi") |
None 값 출력 = 빈값 출력 후 종료 # 입력 인수를 받는 매개변수도 없고 return 문도 없으니 입력값도, 반환값도 없는 함수 |
| 여러 값 반환 | return 뒤에 콤마로 여러 값 | return a, b, a+b | 튜플 형태로 반환 |
| 기본값 매개변수 | 인자 생략 시 기본값 사용 | def greet(name="Guest"): print("Hello,", name) ... greet() |
Hello, Guest |
| 키워드 인자 호출 | 매개변수 이름을 지정해서 전달 | def add(a, b): return a + b ... add(b=3, a=4) |
7 |
| 가변 매개변수 | 여러 개의 인자를 한 번에 받을 때 사용 | def sum_all(*args): return sum(args) ... sum_all(1,2,3,4) |
1+2+3+4 = 10 *args: 인수를 뜻하는 영어 단어 arguments의 약자 = 입력값을 몇 개가 오든 전부 묶어서 하나의 튜플로 받겠다. |
| 가변 키워드 인자 | 이름=값 형태로 여러 인자 전달 | def info(**kwargs): print(kwargs) ... info(name="Tom", age=20) |
{'name': 'Tom', 'age': 20} #**kwargs: 여러 개의 "이름 = 값" |
| 함수 안의 함수 | 함수 내부에 다른 함수 정의 가능 | def outer(): def inner(): |
내부 함수는 외부에서 직접 호출 불가 |
| 함수와 변수의 관계 | 함수는 변수처럼 다룰 수 있음 | f = add; f(3, 4) |
7 |
※ 함수의 반환(return) 개념 정리
| 구분 | 설명 | 예시 | 결과 |
| 기본 반환 | return은 함수를 종료하고, 값 1개를 돌려줌 |
def add(a,b): return a+b ... add(2,3) |
5 |
| 반환값 없는 함수 | return 생략 시, 자동으로 None 반환 | ① def say(): print("Hi") ... say() ② def say(): print("Hi") |
① Hi ② None 값 출력 = 빈값 출력 후 종료 # 입력 인수를 받는 매개변수도 없고 return 문도 없으니 입력값도, 반환값도 없는 함수 |
| 여러 값 반환 | 여러 값을 반환하는 것처럼 써도 실제로는 하나의 튜플을 반환함 |
def calc(a,b): return a+b, a-b, a*b ... calc(3,2) |
(5, 1, 6) = 튜플 1개 |
| 여러 값 받기 (언패킹) |
반환된 튜플을 여러 변수로 분리 가능 | ① def calc(a,b): return a+b, a-b, a*b ... x, y, z = calc(3, 2) ② def calc(a,b): return a+b, a-b, a*b ... x, y, z = calc(3, 2) print(x, y, z) |
① 출력값 없음 = 변환값을 변수에 저장만한 상태 = 튜플을 변수3개로 언패킹한 상태 ② 5 1 6 = 저장된 변수 출력 |
| 여러 return문 | 조건에 따라 한 번만 실행됨 | if나 else에 따라 다른 값 반환 가능 | 여러 return 있어도 한 함수 실행에서 1회만 반환 |
❤️ 요약
| 구분 | 핵심 포인트 |
| 함수 정의 | def 함수이름(매개변수): |
| 반환값 | return 으로 결과 돌려줌. 함수의 반환값은 언제나 하나다. |
| 인자 전달 | 위치 인자, 키워드 인자, 기본값 가능 |
| 가변 인자 | *args, **kwargs 사용 |
| 다중 반환 | return 뒤에 여러 값 → 튜플 형태 반환 |
4-2. 사용자 입출력(Input / Output)
input()은 “사용자에게 값 받기”, print()는 “결과 보여주기”. 입력은 문자열로 들어오며, 숫자 계산엔 int() 변환 필수
| 구분 | 설명 | 예시 | 결과 |
| 입력 | input() (항상 문자열로 반환) |
a = input() print(a) |
사용자가 입력한 값 출력 |
| 입력 + 안내문 | input("문구") → 문구 출력 |
name = input("이름을 입력하세요: ") | 이름을 입력하세요: |
| 입력값 숫자형 변환 |
문자열을 숫자로 변환 ① int(input()), 정수만 가능 ② float(input()), 소수점도 가능 |
① age = int(input("나이: ")) ② age = float(input("나이: ")) |
① 나이: → 10입력 → 나이:10 ② 나이: → 1.5입력 → 나이:1.5 |
| 출력 기본 | print(), 화면에 출력 | print("Hello") | Hello |
| 출력 여러 값 | print(a, b) 여러 값을 띄어쓰기로 구분 출력 |
print(1, 2, 3) | 1 2 3 |
| 출력 구분자 지정 | print(a, b, c, sep=",") sep로 구분자 설정 |
print(1, 2, 3, sep=",") | 1,2,3 |
| 출력 끝 지정 | print(a, end=" ") 기본 줄바꿈 대신 다른 문자로 끝냄 |
print("안녕", end=" "); print("하세요") | 안녕 하세요 |
| 출력 서식 - % 방식 |
"나는 %d살" % age #C언어 스타일 서식 |
age = 20;print("나는 %d살" % age) | 나는 20살 |
| 출력 서식 - format 방식 |
"나는 {}살".format(age) .format() 메서드 사용 |
print("이름: {}, 나이: {}".format("유리", 22)) | 이름: 유리, 나이: 22 |
| 출력 서식 - f-string |
f"나는 {age}살" f-string (Python 3.6↑) |
age = 25;print(f"나는 {age}살") | 나는 25살 |
❤️ 요약
| 구분 | 핵심 포인트 |
| 입력(input) | 사용자의 값을 받아 변수에 저장. 항상 문자열(str)로 반환됨 |
| 출력(print) | 화면에 값 표시. sep, end, format, f-string 으로 제어 가능 |
| 숫자 입력 시 변환 | int(), float() 으로 변환 필수 |
| 서식 방식 3가지 | %, .format(), f"{}" (가장 현대적인 건 f-string) |
4-3. 파일 읽고 쓰기
실제 프로그램을 만들 때 데이터를 저장하거나 불러올 때 꼭 필요한 기본기
open으로 파일을 열고, write로 쓰고 read로 읽고, close 또는 with로 문으로 닫는다.
| 구분 | 설명 | 예시 | 결과 |
| 파일 열기 | 파일을 사용하기 위해open() 함수로 열기 | f = open("test.txt", 'w') | 'w': 쓰기 모드로 파일 생성 |
| 파일 모드 종류 |
파일을 어떤 용도로 열지 지정 | 'w': 쓰기 'r': 읽기 'a': 추가쓰기 | 기존 파일 유무에 따라 다르게 동작 |
| 파일에 쓰기 | write()로 내용 저장 # write() 메서드는 파일에 내용을 쓰는 동시에, “쓴 문자(글자)의 개수”를 반환 |
f = open("test.txt", 'w') f.write(""Hello Python!\n파이썬 파일 입출력 예제입니다.") |
31 |
| 파일 닫기 | close()로 파일 닫기 (반드시 해야 함) | f = open("test.txt", 'w') f.write(""Hello Python!\n파이썬 파일 입출력 예제입니다.") 31 #출력된 값 f.close() |
출력 값 없음. = 파일이 저장 완료됨. 문서 폴더에 test.txt파일 생성됨 → 내용: Hello Python! 파이썬 파일 입출력 예제입니다. ![]() |
| 파일 읽기 | read(), readline(), readlines() | data = f.read() | 파일의 전체 혹은 일부 내용 읽기 |
| ㄴread() | 파일 전체를 한 번에 읽음 | data = f.read() | 긴 파일은 비효율적일 수 있음 |
| ㄴreadline() | 한 줄씩 읽음 | line = f.readline() | 루프에서 자주 사용됨 |
| ㄴreadlines() | 모든 줄을 리스트로 반환 | lines = f.readlines() | 각 줄이 리스트의 요소가 됨 |
| with 문 (권장 방식) |
자동으로 파일 닫기 with open() as f: |
with open("test.txt", 'r') as f: data = f.read() |
close() 생략 가능 |
| 파일 객체 반복 | 파일 객체는 반복(iterable) 가능. 즉, for문에서 한 줄씩 자동으로 읽음 | f = open("test.txt", "r") for line in f: print(line.strip()) f.close() |
파일의 각 줄이 순서대로 출력됨 |
| strip() 사용 이유 |
각 줄 끝에는 기본적으로 \n(줄바꿈 문자)이 포함되어 있음 → 보기 좋게 제거 | line.strip() | 개행 제거 후 깔끔하게 출력 |
| readline() 과의 차이 |
readline()은 한 줄씩 직접 호출해야 함, but, for문은 자동 반복 |
for line in f: → 내부적으로 readline() 반복 호출 |
4-4. 프로그램의 입출력
프로그램의 입출력은 “사용자 → 입력(input) → 처리 → 출력(print)” 흐름이며,
같은 원리로 파일(open, read, write)을 이용해 자동화할 수 있다.
| 구분 | 설명 | 예시 | 결과 |
| 표준 입력 | input(문자열)을 사용해 사용자로부터 데이터 받기 = 입력값을 문자열로 받음 |
name = input("이름 입력: ") | 이름 입력: |
| 표준 출력 | print()를 사용해 화면에 데이터 출력 | name = input("이름 입력: ") 이름 입력: 홍길동 #이름 입력 print("안녕하세요,", name) |
안녕하세요, 홍길동 |
| 파일 입출력 | 파일로 데이터를 저장하거나 불러오기 | open("data.txt", 'w') | 'w', 'r', 'a' 모드 사용 |
| 입력 → 처리 → 출력 | 사용자 입력 → 계산 → 결과 출력 | 아래 예시 참조 | 간단한 프로그램 형태 |
| 파일 기반 프로그램 | 입력값을 파일에서 읽고 결과를 다른 파일로 출력 | read(), write() | 데이터 자동 처리 가능 |
※ sys 모듈 요약
sys는 파이썬이 “운영체제 수준에서 입력·출력·실행 인자”를 다룰 수 있게 해주는 시스템 제어 모듈
| 구분 | 설명 | 예시 | 결과 |
| 모듈 임포트 | 파이썬 기본 제공 모듈로, 사용 전에 import sys 필요 sys는 파이썬 인터프리터와 시스템을 연결하는 기본 모듈 |
import sys | 외부 설치 불필요 |
| 명령줄 인자 | 실행 시 전달된 인자(arguments)를 리스트로 저장 실행 시 입력한 값들이 저장됨. 반드시 터미널에서 실행 |
sys.argv | |
| 프로그램 종료 | 프로그램을 강제 종료 | sys.exit() | 더 이상 코드 실행 안 됨 |
| 표준 입력 | sys.stdin → input() 대신 사용 가능 | data = sys.stdin.readline() | 입력 속도가 더 빠름 |
| 표준 출력 | sys.stdout.write() → print() 대신 사용 | sys.stdout.write("Hello\n") | 자동 줄바꿈 없음 |
| 표준 에러 출력 | 오류 메시지 출력용 | sys.stderr.write("Error!") | 오류 로그용으로 사용 |
| 파이썬 버전 확인 | 실행 중인 파이썬 버전 확인 | sys.version | "3.14.0 (v3.14.0:...)” |
| 모듈 경로 확인 | 파이썬이 모듈을 찾는 경로 확인 | sys.path | 모듈 탐색 경로 리스트 |
'미래 먹거리를 위하여' 카테고리의 다른 글
| [파이썬 정복하기] 점프 투 파이썬 5장 – 파이썬 날개 달기 ② (책 없이 시작하기) (0) | 2025.10.23 |
|---|---|
| [파이썬 정복하기] 점프 투 파이썬 5장 – 파이썬 날개 달기 ① (책 없이 시작하기) (0) | 2025.10.22 |
| [파이썬 정복하기] 점프 투 파이썬 3장 – 프로그램의 구조를 쌓는다! 제어문 (책 없이 시작하기) (0) | 2025.10.20 |
| [파이썬 정복하기] 점프 투 파이썬 2장 – 파이썬 프로그래밍의 기초, 자료형 ② (책 없이 시작하기) (0) | 2025.10.19 |
| [파이썬 정복하기] 점프 투 파이썬 2장 – 파이썬 프로그래밍의 기초, 자료형 ① (책 없이 시작하기) (0) | 2025.10.18 |
