카테고리 없음

Chapter.01 파이썬 프로그래밍04- 함수,I/O

디지털랫드 2024. 3. 19. 16:01

Chapter.01 파이썬 프로그래밍04-함수,I/O

💡 함수(Function) :

한 가지의 기능을 하는 코드 묶음. Input을 받아서 처리하고 Output을 돌려주는 코드.

 

 

Source : https://ko.wikipedia.org/wiki/함수#/media/파일:Function_machine2.svg

  • 함수(function)는 기능(function)을 의미합니다.
  • 함수의 input을 parameter(또는 argument)라고 합니다.
  • 함수는 input을 받아서 주어진 기능대로 처리한 뒤, output을 return합니다.
  • 정의한 함수를 사용하는 것을 function call이라고 합니다.
# function definition syntax example
def function1(a, b):
	something = ...
	<statement>
	<statement>
	...
	...
	return something

result = function1(3, 5)
  • def <function_name> (<parameter1>, <parameter2>, ... **)**의 형태로 함수 prototype을 정합니다.
  • 함수를 호출하면 정의한 code block내의 코드를 실행합니다.
  • 함수의 input인 parameter에 어떤 값이 들어오고, 어떤 결과를 return할지 잘 정해야합니다. (parameterization)
  • 함수를 사용하면 코드를 구조화하기 쉽습니다!
  • 코드의 구조화가 잘되어 있으면, 가독성도 높고 유지/보수를 하기가 편합니다.
  • 기존 코드를 설계할 때부터 함수로 작성하는 경우도 있고, 우선 기능을 하는 코드를 만든 다음에 재구조화를 하는 경우도 있습니다.
  • 이러한 작업을 Refactoring 이라고 합니다.
  • 구조화된 코드는 코드의 재사용성(Reusability)가 향상됩니다. → 코드의 생산성 향상!

Key Points

  1. 함수를 정의해서 사용할 때도, : 사용이 중요합니다.
  2. 함수를 사용하는 이유는 코드의 재사용성을 높이기 위해서 사용합니다.
  3. 함수들의 구조를 잘 짜면 유지보수하기 쉬운 좋은 코드를 만들 수 있습니다.

한 가지의 기능을 하는 코드 묶음. Input을 받아서 처리하고 Output을 돌려주는 코드.

 

 

Chapter.01 파이썬 프로그래밍-I/O

 💡 I/O : Input/Output의 약자로 컴퓨터가 데이터를 입력받고 출력하는 모든 작업을 의미합니다.

Source : https://en.wikiversity.org/wiki/Hardware#/media/File:Computer1.png

 

Hardware - Wikiversity

Main Course Launch Page - Data Size and Speeds Exit Supplmental Material Supplemental Course Navigation Familiarize the learner with the components of computers and the performance of each of them. Explain how graphic cards can be used for computation in a

en.wikiversity.org

  • 프로그램 입장에서 들어오는 모든 데이터를 Input, 나가는 모든 데이터를 Output이라고 합니다.
  • 메인 메모리 입장에서 생각하는 들어오고 나가는 모든 데이터에 대해서 I/O 처리라고 부릅니다. (단, CPU와의 소통은 제외)
  • 사용자로부터 키보드로 입력받는 것을 stdin이라고 하며, 사용자에게 다시 결과를 모니터로 보여주는 것을 stdout이라고 합니다.

# stdin/stdout example
a = input("숫자를 하나 입력하세요 : ")  # input 함수는 뭐든 str로 받아옵니다.
print(a)

>>> 숫자를 하나 입력하세요 : 5
>>> '5'
  • 프로그램은 메인 메모리 상에서 존재하기 때문에, 스토리지로부터 파일을 불러오는 것도 input이고, 프로그램의 결과를 스토리지에 저장하는 것도 output입니다.
  • 스토리지와 프로그램 사이의 I/O를 file I/O라고 합니다.
# filein/fileout example
with open("data/a.txt", 'r') as f:
	data = f.readlines()
  • 파이썬에서는 with open() 함수를 통해서 텍스트 파일을 쉽게 불러올 수 있습니다.
  • ‘r’, ‘w’, ‘a’ 등의 mode를 바꿔서 파일을 다른 옵션으로 열 수 있다. (read, write, append 순)
  • 다른 타입의 파일을 열기 위해선 다른 라이브러리들이 필요합니다.e.g. png, jpg 파일을 열기 위해 PIL, opencv 라이브러리를 사용할 수 있다.
  • e.g. pk, pkl 파일을 열기 위해 pickle 라이브러리를 사용할 수 있다. (파일 타입이 binary라서, ‘rb’를 써야함)
  • e.g. csv, excel 파일을 열기 위해 pandas, csv, openpyxl 라이브러리를 사용할 수 있다.
  • I/O가 데이터 처리를 할 때 가장 느린 파트이기 때문에 신경써줘야 합니다. (performance bottleneck)

Key Points

  1. 파이썬에서 키보드로 데이터를 입력하려면 input 함수를 사용해야 합니다.
  2. 파일로 된 데이터를 읽어오려면 file I/O처리가 필요합니다. 어떤 타입의 데이터를 읽어오느냐에 따라 필요한 라이브러리가 달라집니다.
  3. file의 사이즈가 크면, file I/O가 데이터 처리에 치명적인 성능 저하를 가져올 수 있습니다.