안녕하세요. 바른 호랑이입니다.
이번 게시글에서는 Python의 함수, 사용자 입/출력, 파일 편집에 대해 알아볼 예정입니다.
- 함수(Function)
ㆍ입력값을 활용하여 특정 로직을 수행한 결과를 출력하는 일을 하며, 반복되는 일을 효율화하거나 프로그램의 흐름을 파악하기 위해 주로 사용함.
ㆍpython에서는 함수를 만들 때 def 문법을 사용하며, 함수 이름과 parameter 조건을 설정하고 내부구조에 수행할 업무와 관련된 코드를 작성함.
ㆍ함수 작성시 반드시 입력값과 결과값이 있어야 하는 것은 아니며, 상황에 맞게 필요한 내용으로 함수를 작성하면 됨.
# 함수의 예시
def sum(parameter_01, parameter_02):
result = parameter_01 + parameter_02
return result
print(sum(1, 2))
# 입력값과 결과값이 없는 함수
def declare_start():
print('Start!')
# 결과값이 없는 함수
# 결과값은 return 명령어로만 돌려받을 수 있으며, 결과값이 없는 함수를 print할 경우 None을 반환함.
def sum(parameter_01, parameter_02):
print(f'{parameter_01}, {parameter_02}의 합은 {parameter_01 + parameter_02}입니다.')
print(declare_start())
print(sum(7, 8))
# 다수의 입력값을 받는 함수
def sum(*args): # parameter 선언시 *args처럼 *를 붙이면 입력값들을 전부 모아 튜플형태로 만듬. *args형태가 아닌 다른 명칭으로 써도 무방
sum = 0
for i in args:
sum += i
return args, sum
print(sum(1, 2, 3, 4, 5, 6 ,7 ,8 ,9))
# 자료형을 혼용해서 받는 경우
def arithmetic_operation(type, *args):
default_01 = 0
default_02 = 1
if type == 'sum':
for i in args:
default_01 += i
result = default_01
elif type == 'sub':
for i in args:
default_01 -= i
result = default_01
elif type == 'mul':
for i in args:
default_02 *= i
result = default_02
elif type == 'div':
for i in args:
default_02 /= i
result = default_02
else:
default = f'{type}은 잘못된 인수입니다. 올바른 parameter를 입력해주세요.'
result = default
return result
print(arithmetic_operation('sum', 2, 3, 4))
print(arithmetic_operation('sub', 2, 3, 4))
print(arithmetic_operation('mul', 2, 3, 4))
print(arithmetic_operation('div', 2, 3, 4))
# return의 원리 : 가장 먼저 실행된 return 하나만 출력함.
def mul(parameter_01, parameter_02):
return parameter_01 + parameter_02
return parameter_01 * parameter_02
def say(name):
if name == 'John':
return 'cook'
print(1111111111111111111)
print(22222222222222222)
print(mul(1 ,2), say('John'), sep='\n')
# 함수의 default값 설정
# default값이 설정된 변수는 default값이 설정되지 않은 변수보다 무조건 앞으로 와야함.
def say_myself(name, old, job='student'):
result = f'My name is {name}. I\'m {old} years old. My job is {job}.'
return result
print(say_myself('John', 19), say_myself('Anne', 28, 'designer'), sep='\n')
# 함수의 default값 설정
# default값이 설정된 변수는 default값이 설정되지 않은 변수보다 무조건 앞으로 와야함.
def say_myself(name, job='student', old):
result = f'My name is {name}. I\'m {old} years old. My job is {job}.'
return result
print(say_myself('John', 19), say_myself('Anne', 28, 'designer'), sep='\n')
# 함수에서 선언한 parameter의 범위 / 함수 내에서 사용된 변수는 지역변수로 전역변수가 아니기에 함수내에서만 작동함.
hello = 'default'
def parameter_range_test():
hello = 'hello'
return hello
print(hello, parameter_range_test(), hello, sep='\n')
# 함수 안에서 함수 밖의 변수를 변경하는 방법
# return 이용하기
result = 0
def value_test(parameter_01):
result = parameter_01
return result
result = value_test(100)
print(result)
# global 이용하기 : 외부 변수에 종속적인 함수는 좋은 함수가 아니므로 가급적 global명령어는 사용 x
result = 0
def value_test(parameter_01):
global result
result = parameter_01
return 0
value_test(1000)
print(result)
- 사용자 입력과 출력
ㆍ대부분의 프로그램들은 사용자의 입력에 따라 맞춤형 출력을 내보내며, 사용자 입력 → 처리(프로그램, 함수 등) → 출력의 워크플로우 구조를 취하기에 사용자에게 변수를 받는 것을 구현하는 것은 기본이자 핵심이라고 할 수 있음.
# 입력과 함수 활용 / 메뉴주문
def order_menu(name, *args):
food = args[0]
beverage = args[0]
result = f'order list : food / {food}, beverage / {beverage}'
return result
name = input('주문자 이름을 입력해주세요.: ')
food = input('주문하실 음식을 입력해주세요.: ')
beverage = input('주문하실 음료를 입력해주세요.:')
print(order_menu(name, food, beverage))
- 파일 읽고 쓰기(File read and write)
ㆍ함수등을 활용하여 입력값을 받을 경우 반드시 사용자가 직접 입력해야 하는 것은 아니며, 이미 작성된 파일을 활용하여 값을 입력받을 수도 있는데 이때 사용할 수 있는 여러 가지 함수가 python에는 존재함.
# 파일 생성하기(colab기준이며, Local 환경에서는 코드를 일부 변경해야할 수 있음.)
'''
파일 열기 모드 종류
1. r : 읽기 모드 - 파일을 읽기만 할 경우 사용
2. w : 쓰기 모드 - 파일에 내용을 쓸 경우 사용
3. a : 추가모드 - 파일의 마지막에 새로운 내용을 추가할 때 사용
'''
f = open('/content/sample_data/test_file_01.txt', 'w')
for i in range(1, 11):
f.write(f'{i}\n')
f.close()
# 파일에 값 추가 작성하기
f = open('/content/sample_data/test_file_01.txt', 'a')
f.write('11')
f.close()
# 파일 읽기
# readline() 사용 : 데이터를 한 줄씩 읽음.
f = open('/content/sample_data/test_file_01.txt', 'r')
while True: # 모든 라인을 출력
line = f.readline()
if not line:
break
print(line, end='')
f.close()
# readlines() 사용 : 데이터를 리스트 형태로 읽음.
f = open('/content/sample_data/test_file_01.txt', 'r')
print(f.readlines())
f.close()
# read() 사용 : 데이터를 하나의 string으로 읽음.
f = open('/content/sample_data/test_file_01.txt', 'r')
result = f.read()
f.close()
result
# with문과 함께 사용하기 : with문과 같이 사용하면 f.close()로 파일을 직접 닫지 않아도 with문을 벗어나는 순간 자동으로 닫아줌.
with open('/content/sample_data/test_file_01.txt', 'r') as f:
print(f.read())
# 간단한 피보나치 수열 구현
def fibonacci(n):
if n <= 1:
result = n
else:
result = fibonacci(n-1) + fibonacci(n-2)
return result
for i in range(10):
if i == 9:
print(fibonacci(i))
else:
print(fibonacci(i), end=', ')
'IT & 데이터 사이언스 > Python' 카테고리의 다른 글
[Python] Python의 모듈, 패키지, 예외처리 (0) | 2024.04.23 |
---|---|
[Python] Python의 클래스 (2) | 2024.04.22 |
[Python] Python의 제어문(if, while, for문) (2) | 2024.04.19 |
[Python] Python의 자료형(튜플, 딕셔너리, 집합, 변수)⑵ (2) | 2024.04.19 |
[Python] Python의 자료형(숫자, 문자열, 리스트)⑴ (2) | 2024.04.18 |
댓글