1. 함수의 정의
2. 예
-함수 : 입력(input)을 받아 원하는 처리를 한 후 출력(output)을 내보내는 작업을 수행하는 코드 블록
-코드 재사용, 모듈화, 유지 보수에 용이, 가독성 향상
- 함수 정의
def 함수이름(매개변수):
함수 내부에서 수행할 문장1
함수 내부에서 수행할 문장2
...
return 결과값 # (선택적) 함수의 결과를 반환
- 매개변수(parameter) : 함수 내에서 정의되어 사용되어지는 변수
- 인수(arguments) : 함수를 호출할 때 건네주는 변수
기본 함수 - 예제
def add(a,b): --a,b는 매개변수
result=a+b
return result
print(add(3,4)) # 7 -- 3,4는 인수
이 함수의 이름은 add이고 입력으로 2개의 값을 받으며
리턴값(출력값)은 2개의 입력값을 더한 값이다.
입력값이 없는 함수
def say():
return 'Hi' -- 매개변수(입력값)가 없어도 Hi라는 값이 return 가능
but 다른 값이 say(a) 처럼 들어가면 -> error
a = say()
print(a) #Hi -- a가 출력
출력값이 없는 함수
[return값이 없는 경우]
def add(a,b):
print("%d,%d의 합은 %d입니다" % (a,b,a+b))
-- return X
a = add(1,2) -- add 함수로 처리 후 출력return이 없으므로
a에 None이 담김
print(a) # 1,2의 합은 3입니다 -- print로 그냥 찍은 것(O), return값 (X)
# None
만약 있다면?
[return값이 있는 경우]
def add(a,b):
print("%d,%d의 합은 %d입니다" % (a,b,a+b))
return a+b
a = add(1,2)
print(a) # 1,2의 합은 3입니다
# 3
입력값, 출력값 모두 없는 함수
def say():
print('Hi') -- 어떠한 입력을 받아서 수행하는 것(X)
그냥 실행하면 입력값이 없어도 함수가 실행됬을 때 실행되는 print
a = say() -- say에서 a에 return 되는 값 X = a에 아무것도 안담김
print(a) # Hi
# None -- a에 아무것도 담기지 않았기때문
매개변수를 지정하여 호출하기
def sub(a,b) :
return a-b
a = sub(b=1,a=3) -- a에 함수 결과가 return 되어 담겨짐
a에 3, b에 1 굳이 지정하여 전달 가능(위치 순서 상관x)
print(a) # 2 -- print하면 2가 출력
입력값이 여러 개인 함수 : 여러 개의 매개변수를 *args 로 지정 -> 매개변수(입력값)을 한번에 받아주기
def add_many(*args):
result = 0
for i in args:
result = result + i -- args에 입력받은 모든 값을 더한다.
return result
print(add_many(1,2,3,4,5)) -- 1,2,3,4,5 를 다 쓰지 않고도 함수 적용 가능
# 15
여러개 + 하나 지정하는 것도 가능 !
def add_mul(choice,args*):
if choice == "add" : -- 매개변수 choice에 "add"를 입력받았을 때
result = 0
for i in args: -- args에 있는 값을 하나씩 가져와서
result = result + i -- result에 더함
elif choice == "mul" : -- 매개변수 choice에 "mul"을 입력받았을 때
result = 1
for i in args : -- args에 있는 값을 하나씩 가져와서
result = result * i -- result에 곱함
return result
result = add_mul("add",1,2,3,4) -- 첫번째 매개변수에 add라는 aurguments를 주고,
print(result) 나머지 뒤의 arguments들은 몇개든 상관없이 다 받아서 *args로 들어가게 됨
# 10
📌 result = result + i 의 의미
기존의 result 값에 i 를 더한 후, 다시 result 에 저장함.
i = 1 일 때 -> result = 시작값 0 + 1 -> result = 1
i = 2 일 때 -> result = 1 + 2 -> result = 3
i = 3 일 때 -> result = 3 + 3 -> result = 6
i = 4 일 때 -> result = 6 + 4 -> result = 10
📌 result = result * i
i = 1 일 때 -> result = 시작값 1 * 1 -> result = 1
i = 2 일 때 -> result = 1 * 2 -> result = 2
i = 3 일 때 -> result = 2 * 3 -> result = 6
i = 4 일 때 -> result = 6 * 4 -> result = 24
키워드 매개변수 : **kwargs - 딕셔너리 형태, key와 value로 받는 것
def print_kwargs(**kwargs) : --입력값의 갯수에 상관없이 **kwargs로 받아서
print(kwargs) 딕셔너리 { : , : } 형태로 출력
print_kwargs(a=1,b=2) # {'a':1 , 'b':2}
함수에서 return 값은 only 하나이다 : return 이 나오면 함수 종료
함수는 return문을 만나는 순간 결과값을 돌려준 다음 함수를 빠져나가게 된다.(종료)
매개변수에 기본값 미리 지정하기 : 초기값이 잇는 매개변수는 항상 맨 뒤에 위치
매개변수에 미리 man = True 라고 초깃값을 미리 설정해 놓으면

이후 say_myself("이빠진퍄노", 20) 다음에 man = True 라는 게 기본값이므로 써줘도, 안 써줘도 결과가 같음
name과 old는 함수로 들어가서 사용되나 man은 기본값이 True이므로 if문이 true라서 "남자입니다"가 출력됨.
#
나의 이름은 이빠진퍄노 입니다.
나이는 20살입니다.
남자입니다.
↔ 새로운 값("여자입니다") 가 필요하면
say_myself("이빠진퍄노", 20, False) <- False를 써 줌으로써 기본값을 없애고 "여자입니다"가 출력됨
#나의 이름은 이빠진퍄노 입니다.
나이는 20살입니다.
여자입니다.
Lambda
함수를 한줄로 간결하게 만들때 사용
lambda 매개변수 : 실행할 코드
def add(a,b):
return a+b
add = lambda a, b : a+b
result = add(3,4)
print(result)
-함수의 평균 계산
def calculate_mean(numbers): -- calculate_mean 이라는 함수의 매개변수는 numbers
total = sum(numbers) -- numbers의 값을 더해서 total 이라는 변수에 담고
mean = total / len(numbers) --그 값의 len() (갯수)를 센뒤 토탈에서 나눠주면
return mean -- mean(평균)을 구함. 그 뒤 return으로 함수 밖으로 내보냄
# 함수 호출 및 예시
data = [10, 20, 30, 40, 50] -- 숫자 리스트를 인수로 전달
average = calculate_mean(data) -- 함수를 통해 평균값 계산
print("평균:", average) # 출력 - 평균 : 30
-숫자 리스트에서 최대값 찾는 함수
def find_max(numbers): -- find_max라는 함수의 매개변수는 numbers
max_num = numbers[0] -- 인덱싱하여 numbers의 첫번째 값을 가져옴
for num in numbers: -- numbers에 있는 값을 가져오는데
if num > max_num: 첫번째 값(max_num) 보다 큰 경우에만
max_num = num max_num에 값이 들어감 [반복]
return max_num -- 이런 반복을 계속한 뒤 결과를 출력
# 함수 호출
print(find_max([3, 7, 2, 9, 5])) # 출력: 9
-튜플의 모든 요소를 곱하는 함수
def multiply_tuple(tup): -- 함수의 매개변수 tup
result = 1 -- 초기값을 임의로 1로 지정
for num in tup: -- 튜플에서 값(num)을 하나씩 빼오고
result *= num result에 계속해서 임의로 빼온 그 값(num)을 누적해서 곱함
return result
# 함수 호출
print(multiply_tuple((2, 3, 4))) # 출력: 24
-주어진 문자열에서 각 문자의 출현 빈도를 딕셔너리로 반환하는 함수
def char_frequency(string): -- string이라는 매개 변수
freq_dict = {} -- 임의의 딕셔너리 생성
for char in string: -- string에서 글자를 하나씩 빼옴
if char in freq_dict: -- 조건문에서의 in 은 char이라는 단어가 freq_dict에서 존재유무 확인
freq_dict[char] += 1 -- true이면 발동
else:
freq_dict[char] = 1 -- false면 발동
return freq_dict
# 함수 호출
print(char_frequency("hello")) # 출력: {'h': 1, 'e': 1, 'l': 2, 'o': 1}
2. 심화
- 전역변수 vs 지역변수
- 전역변수 : 프로그램 전체에서 접근 가능한 변수, 함수 내에도 접근 가능
- 지역변수 : 특정한 범위(함수 내부)에서만 접근 가능한 변수.
범위를 벗어나면 메모리에서 사라짐(해당 함수에서만 유효)
# 전역변수 예시 -- 함수 외부,내부에서 가능
global_var = 10
def global_example():
print("전역변수 접근:", global_var)
global_example() # 출력: 전역변수 접근: 10
# 함수 내에서 전역변수를 수정하는 예시
def modify_global():
global global_var
global_var = 30 -- 값을 새로 담았음
print("함수 내에서 수정된 전역변수:", global_var)
modify_global() # 출력: 함수 내에서 수정된 전역변수: 30
print("수정된 전역변수 확인:", global_var) # 출력: 수정된 전역변수 확인: 30
# 지역변수 예시
def local_example():
local_var = 20
print("지역변수 접근:", local_var)
local_example() # 출력: 지역변수 접근: 20
- 인수 vs 매개변수
- 인수(Argument) : 함수를 호출할 때 함수에 전달되는 실제 값
- 위치 인수 : 함수를 호출할 때, 매개변수의 위치에 따라 순서대로 전달
- 키워드 인수 : 함수를 호출할 때, 특정 매개변수에 값을 할당하여 전달
- 매개변수(Parameter) : 함수를 정의할 때 함수가 받아들이는 값을 지정하는 변수,
함수 내부에서 사용됨(전달인자)
- 인수(Argument) : 함수를 호출할 때 함수에 전달되는 실제 값
# 매개변수(parameter) 예시
def greet(name): # 여기서 'name'은 매개변수입니다.
print("Hello, " + name + "!")
# 함수 호출할 때 전달되는 값이 인수(argument)입니다.
greet("Alice") # 함수 호출 시 "Alice"[인수]는 greet 함수의 [매개변수]'name'에 전달됩니다.
def add_numbers(x, y): # 'x'와 'y'는 매개변수입니다.
result = x + y
return result
# 함수 호출 시 10과 20이 각각 'x'와 'y' 매개변수에 전달됩니다.
sum_result = add_numbers(10, 20) # 10과 20이 전달인수(Argument)입니다.
print("Sum:", sum_result) # 출력: Sum: 30
- 위치 인수 : 순서대로 인수값이 매개변수에 매핑됨
def greet(name, age):
print("안녕하세요", name, "님! 나이는 ", age, "세입니다.")
# 위치 전달인자 사용
greet("철수", 30) -- 위치에 따라 철수 다음 30 이 매핑
# 출력: 안녕하세요, 철수님! 나이는 30세입니다.
- 키워드인수 : 어떤 매개변수에 - 어떤 인수값을 쓸건지 명확하게 지정
순서에 상관없이 매핑됨
def greet(name, age):
print("이름:", name)
print("나이:", age)
# 키워드 인수를 사용하여 함수 호출
greet(name="Alice", age=30) -- 매개변수 name에 alice라는 값을 할당
매개변수 age에 30 이라는 값을 할당
- 매개변수에 기본값(Default Values) 설정하기
def greet(name="Guest", age=25): -- 매개변수의 기본값 설정
print("이름:", name)
print("나이:", age)
# 기본값이 설정된 함수 호출
greet() -- 함수 호출시 인수가 전달되지 않으면 기본값 사용
- 기본값 + 키워드 함수
def greet(name="Guest", age=25):
print("이름:", name)
print("나이:", age)
# 키워드 인수를 사용하여 함수 호출
greet(name="Alice", age=30) -- 인수에 키워드 지정하여 함수 호출
# 이름 : Alice
나이 : 30
# 일부 매개변수에만 키워드 인수 사용하여 호출
greet(name="Bob") -- 키워드를 하나만 지정할경우, 나머지에는 기본값이 들어감
# 이름 : bob
나이 : 25
- 가변인수 : 여러개의 인수들을 받을 수 있는 함수를 만들기위해 가변인수 사용
- *args : 함수를 호출할 때, 임의의 위치 인수 전달
def sum_values(*args): -- 매개변수에 *args : 인수가 몇개든 상관없이 실행가능
total = 0
for num in args:
total += num
return total
result = sum_values(1, 2, 3, 4, 5) -- 인수
print("합계:", result) # 출력: 합계: 15
-
- **kwargs : 함수를 호출할 때, 임의의 개수의 키워드인수 전달
def print_info(**kwargs): -- 매개변수에 **kwargs 사용 : 인수가 몇개든 상관없음,
for key, value in kwargs.items(): 키워드에 맞게끔 정리해서 넣어줌
print(key, value)
print_info(name="Alice", age=30, country="USA")
- 함수가 데이터 분석에서 사용되는 경우
- 데이터 전처리 함수 : 데이터 정규화, 결측치 처리 등의 함수를 사용하여 데이터 전처리
- 데이터 시각화 함수 : 데이터의 분포, 상관관계 등을 함수를 사용하여 히스토그램, 산점도로 시각화
- 통계 계산 함수 : 다양한 통계량 계산
def stadardization(data):
# 데이터 표준화 함수
scaled_data = (data - data.mean()) / data.std()
return scaled_data
def impute_missing_values(data):
# 결측치 처리 함수
filled_data = data.fillna(data.mean())
return filled_data
def nomalization(data):
# 데이터 정규화 함수
scaled_data = (data - data.min()) / (data.max() - data.min())
return scaled_data
import matplotlib.pyplot as plt
def plot_histogram(data):
# 히스토그램을 그리는 함수
plt.hist(data, bins=20)
plt.xlabel('Value')
plt.ylabel('Frequency')
plt.title('Histogram of Data')
plt.show()
def plot_scatter(x, y):
# 산점도를 그리는 함수
plt.scatter(x, y)
plt.xlabel('X')
plt.ylabel('Y')
plt.title('Scatter Plot')
plt.show()
import numpy as np
def calculate_mean(data):
# 평균을 계산하는 함수
return np.mean(data)
def calculate_std(data):
# 표준편차를 계산하는 함수
return np.std(data)
def calculate_correlation(x, y):
# 상관 관계를 계산하는 함수
return np.corrcoef(x, y)'데이터 분석 > Python' 카테고리의 다른 글
| Jump to Python 1. 파이썬의 개념, 기본함수 (0) | 2025.03.12 |
|---|---|
| Python(5) : 파이썬 문법 (0) | 2025.03.11 |
| Python 기초문법 라이브세션 : 코드 작성시 주의할 점 8가지 (1) | 2025.03.07 |
| Python(3) 제어문 : 조건문 - if / 반복문 - for, while (0) | 2025.03.06 |
| Python (2) : list[ ], tuple( ), dictionary{ } (0) | 2025.03.05 |