본문 바로가기
IT & 데이터 사이언스/Python

[Python] Python의 함수, 사용자 입/출력, 파일 편집

by 바른 호랑이 2024. 4. 22.
728x90
반응형

안녕하세요. 바른 호랑이입니다.

이번 게시글에서는 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()

append 모드로 데이터 추가

# 파일 읽기
# 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=', ')

실행결과

728x90
반응형

댓글