지금까지 파이썬의 기본적인 자료형, 제어문 등에 대해서 살펴보았으니 이걸 바탕으로 함수, 입출력, 파일 처리 방법 등에 대해서 살펴보자.
먼저 함수이다.
함수는 어떤 프로그래밍 언어든지 간에 가장 많이 쓰이는 개념일 것이다. 함수가 없는 프로그램은 아마 없을 정도.
함수는 기본적으로 입력(없어도 됨) 그리고 출력(없어도 됨)으로 이루어진 코드 블록이다.
특히 반복적인 내용을 작성할 때 가장 주요하게 사용된다.
어떤 기능을 함수로 정의해준 다음 상황에 따라 입력값만 다르게 해주면 결국 기능은 똑같기 때문에 정의된 코드만 있다면 계속해서 반복적으로 사용이 가능하다.
def add(a,b):
return a + b
기본적으로 def로 함수를 선언해주고 이름 그리고 ()안에 매개변수를 입력해준다.
매개변수는 이 함수에 입력으로 전달되는 값을 받는 변수이다.
한글로 풀어서 설명하면
이 함수의 이름은 add이고 입력으로 2개의 값을 받으면 리턴값(출력값)은 2개의 입력값을 더한 값이ㅏㄷ.
매개변수parameter와 인수arguments는 혼용해서 사용되는 용어인데 매개변수는 함수에 입력으로 전달 된 값을 받는 변수, 인수는 함수를 호출할 때 전잘하는 입력값을 의미한다.
def add(a,b): // a,b는 매개변수
return a + b
print(add(3,4)) // 3,4는 인수
함수는 입력값이 없어도 상관없다.
입력값이 없다면 ()로만 쓰고 정의를 하면 된다.
만약 입력값이 몇 개가 될지 모를 때는 어떻게 해야할까?
예를 들어 입력값이 몇개인지는 모르고 모든 입력값을 더해 주는 함수를 생각해보자.
def add_many(*args):
result=0
for i in args:
result = result + i
return result
매개변수로 *을 포함하여 args라고 불어주었다.
*args는 입력값이 몇개든 간에 모든 입력값이 다 들어가있는 튜플을 만들어준다.
args는 튜플이 되어 for 반복문을 돌게 되고 다 더한 값인 result를 출력하게 된다.
그렇다고 여러 개의 입력을 처리할 때 *args만 써야되는 건 아니다.
def add_mul(choice, *args):
if choice == 'add':
result=0
for i in args:
result += 1
elif choice == 'mul':
result = 1
for i in args:
result *= i
return result
이런식으로 쓰게 되면 choice변수는 choice 변수대로 사용이 가능하고 뒤에 오는 값들은 다시 튜플로 싹 묶어서 계산이 된다.
이번에는 키워드 매개변수에 대해 알아보자.
**kwargs를 활용하여 매개변수를 선언해줄 수 있다.
def print_kwargs(**kwargs):
print(kwargs)
print_kwargs(name = "foo", age=3)
// {'age':3, 'name':'foo'}
이런 식으로 입력값을 딕셔너리 형태로 저장하게 된다.
함수의 return에 대해서 계속 썼는데 리턴값이 언제나 하나임을 명심해야한다.
함수를 실행하다 return을 만나게 되면 바로 함수를 빠져나오기 때문에 return을 여러번 쓴다고 해서 여러개를 출력하지 않는다.
함수 안에서 변수의 이름을 함수 밖에서도 동일하게 사용한다면 어떻게 될까?
a=1
def vartest(a):
a=a+1
vartest(a)
print(a) // 1
vartest를 통해 1이 커졌을 것 같지만 실제로 출력해보면 1이 그대로다.
함수 내에 있는 a와 함수 밖에 있는 a는 다른 변수이며 print를 하면 처음에 선언한 1이 그대로 나온다.
그렇다면 함수 안에서 함수 밖에 변수를 변경하려면 어떻게 해야할까?
a=1
def vartest(a):
a=a+1
return a
a=vartest(a)
print(a)
a=1
def vartest():
global a
a=a+1
vartest()
print(a)
함수의 리턴값을 다시 할당해주거나 global 키워드를 사용해서 직접 바꾸면 된다.
다음은 사용자의 입출력에 대해 살펴보자.
함수가 입출력의 많은 부분을 차지하지만 실제로 유저한테 입력값을 받기 위해서는 어떻게 해야할까?
a=input()
위 코드를 실행하면 터미널에 깜빡이는 프롬프트가 보일 것이고 거기에 어떤 값이나 문자열을 입력하면 그 데이터가 문자열의 형태로 a라는 변수에 저장되게 된다.
출력으로는 print가 대표적인데 그냥 그 전부터 너무 많이 썼으니깐 패스
우리는 지금까지 화면을 통한 입출력 값을 주로 살펴보았는데 이번에는 파일을 통한 입출력 방법에 대해 알아보자.
f=open('newfile.txt', 'w')
f.close()
파이썬을 통해 새로운 파일을 만들어줄 수 있다.
파일이름과 파일 열기 모드로 조합하여 open을 해주면 되고 파일 열기에는 총 3가지 모드가 있다.
r | 읽기 모드 : 파일을 읽기만 할 때 사용한다. |
w | 쓰기 모드 : 파일에 내용을 쓸 때 사용한다. |
a | 추가 모드 : 파일의 마지막에 새로운 내용을 추가할 때 사용한다. |
read, write, append의 약자로 첫 글자만 써주면 되서 상당히 이해하기 쉽다.
파일 안의 내용을 읽고 그 안의 데이터를 조작하고 싶을 땐 어떻게 해야할까?
f = open('어떤파일.txt', 'r')
line = f.readline()
print(line)
f.close()
또는
f = open('어떤파일.txt', 'r')
lines=f.readlines()
for line in lines:
print(line)
f.close()
한줄씩 읽을수도 있고 전체를 줄별로 리스트에 담아 읽는 방식이 있다.
f.open('어떤파일.txt','a')
data = "몇번째 줄입니다."
f.write(data)
f.close()
append 모드는 상당히 쉽다.
write 메소드를 통해 추가하고 싶은 데이터를 괄호 안에 넣어주고 실행해주기만 하면 끝이다.
항상 open과 close는 짝을 지어서 코드를 작성해줘야 한다.
'Python' 카테고리의 다른 글
파이썬 스터디 5장 - 파이썬에 날개 달기 (2) (0) | 2023.07.05 |
---|---|
Python 스터디 5장 - 파이썬 날개 달기 (1) (0) | 2023.06.30 |
Python 스터디 3장 - 프로그램의 구조를 쌓는다! 제어문 (0) | 2023.06.26 |
Python 스터디 2장 - 파이썬 프로그래밍의 기초, 자료형 (2) (0) | 2023.06.25 |
Python 스터디 2장 - 파이썬 프로그래밍의 기초, 자료형 (1) (0) | 2023.06.25 |