본문 바로가기

미래 먹거리를 위하여

[파이썬 정복하기] 점프 투 파이썬 4장 – 파이썬의 입출력 (책 없이 시작하기)

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 모듈 탐색 경로 리스트