[TIL] Python 2024-10-17
머신러닝, 딥러닝도 하나의 거대한 함수
데이터 처리 흐름을 하나의 함수로 묶어서 가능
개념
장점
기본 정의
def 함수이름(매개변수1, 매개변수2 ...):
### 함수 기능 수행 코드 ###
return 결과값
함수 호출
result = 함수이름(인수1, 인수2 ...)
# 인수 : 함수에 들어가는 입력 값
예시)
def char_frequency(string):
freq_dict = {}
for char in string:
if char in freq_dict:
freq_dict[char] += 1
else:
freq_dict[char] = 1
return freq_dict
char_frequency("It's the morning of the 4th day !")
### 아래처럼 출력됨 -> ###
{'I': 1,
't': 4,
"'": 1,
's': 1,
' ': 7,
'h': 3,
'e': 2,
'm': 1,
'o': 2,
'r': 1,
'n': 2,
'i': 1,
'g': 1,
'f': 1,
'4': 1,
'd': 1,
'a': 1,
'y': 1,
'!': 1}
특정한 범위 (예. 함수 내부) 에서만 접근 가능한 변수
→ 해당 범위를 벗어나면 메모리에서 사라짐
*메모리 낭비를 줄임.

def greet(name): # -> name 이 매개변수
print("hello " + name + " -!")
greet("Alice") # -> Alice 가 인수→ 매개변수 많을 때는, 이렇게 하면 순서 상관이 없으므로 직접 키워드를 입력해서 인수를 넣기도 함.def sum_numbers(*args):
total = sum(args)
print(f"들어온 인자들: {args}\n 총합: {total}")
return total
sum_numbers(1,2,3)
### 실제 출력 ->
# print 찍은 것들이 먼저 두 줄 출력,
# 원래 함수 리턴값 마지막에 6 출력
들어온 인자들: (1, 2, 3)
총합: 6
6** + keyword + arguments
임의의 개수의 키워드 인자를 받음
입력된 인자를 하나의 딕셔너리로 묶어 함수에 전달함
예시)
def print_info(**kwargs):
for key, value in kwargs.items():
print(f"{key}: {value}")
print_info(name="Alice", age=30, country="Korea")
데이터 정규화 함수 만들기
import pandas as pd
import numpy as np
# 예제 데이터 생성 (국어, 수학, 영어 점수)
np.random.seed(42) # 난수 생성 고정되게 하기 위함. 아무 숫자나 들어가도 됨
data = pd.DataFrame({
'Korean': np.random.randint(50, 100, size=10),
'Math': np.random.randint(40, 100, size=10),
'English': np.random.randint(30, 100, size=10)
})
print("원본 데이터: ")
print(data)
# 함수
def standardization(data):
scaled_data = (data - data.mean()) / data.std() # 표준화 수식 수정
return scaled_data
# 함수 호출 및 출력
scaled_data = standardization(data)
print("\n표준화된 데이터: ")
print(scaled_data)
# write & save json
import json
data = {
'Name': ['John', 'Emily', 'Michael'],
'Age' : [30, 25, 20],
'City' : ['New York', 'Los Angeles', 'Seoul']
}
output_path = '/!@#$/data.json'
# 'w' writing 쓰기 모드로 열고 ->
# json.dump 로 data 를 file 에 덮어씀
with open(output_path, 'w') as file:
json.dump(data, file, indent=4)
print("JSON 파일이 생성되었습니다.")
######################################
# write & save txt
file_path = '!@#$/SpartaClub'
data = {
'Name': ['John', 'Emily', 'Michael'],
'Age' : [30, 25, 20],
'City' : ['New York', 'Los Angeles', 'Seoul']
}
with open(file_path + '/sample.txt', 'w') as file:
for key, item in data.items():
file.write(str(key)+" : "+str(item)+'\n')
print("Saved txt file")
[표현식 for 항목 in iterable]
[표현식 for 항목 in iterable if 조건문]
기본 구조 : 주로 한 줄로 표현되는 간단한 표현식만을 포함함
예시)
add = lambda x,y :x + y
print(add(3,5))
# 출력
# 8
파일 시스템에서 파일 찾을 때 사용
파일 검색, 일치하는 파일 리스트 반환해줌
예시)
import glob
file_list1 = glob.glob('*')
print(f"file_list1: {file_list1}")
file_list2 = glob.glob('*.txt')
print(f"file_list2: {file_list2}")
# 출력
file_list1: ['sample.txt', '파이썬_종합반_연습.ipynb']
file_list2: ['sample.txt']
os 모듈은 운영 체제와 상호작용 하기 위한 여러 함수를 제공함
예시)
import os
cwd = os.getcwd()
print(cwd)
os.mkdir('new_directory')
os.remove('/test.csv')
files = os.listdir('/content')
path = os.path.join('/content','sample_data','test.csv')
문자열 나누기
split(’기준_구분자’)
rsplit(’기준_구분자’, 오른쪽부터구분자순번)
실제 활용 예시)

객체 지향 프로그래밍 (OOP) 의 중요한 개념 중 하나
객체 지향 프로그래밍은 현실 세계의 사물을 모델링하여 프로그래밍하는 방법
→ 재사용성, 유지보수성 향상
기본 구조
class ClassName:
def __init__(self, parameter1, parameter2):
self.attribute1 = parameter1
self.attribute2 = parameter2
def method1(self, parameter1, parameter2):
# 메서드 내용 작성
pass
init메서드
: 클래스의 생성자
→ 객체가 생성될 때 호출되어 초기화 작업을 수행
- 첫 번째 매개변수 self 는 반드시 사용
→ 해당 메서드가 속한 객체를 가리킴.
클래스 내부의 매서드들
: 클래스의 동작을 정의하는 함수
예시)
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
person1 = Person("Alice", 30)
person2 = Person("Bob", 25)
print(person1.age)
print(person2.age)
# 출력
# 30
# 25