특수함수

2023. 3. 7. 09:10Python/실전 예제로 배우는 파이썬 프로그래밍

특수함수: 특정한 문제의 해결 과정에서 필요로 하는 함수

 

가변인수 함수

 

파이썬에서는 하나의 매개변수로 여러 개의 실인수를 받을 수 있는 가변인수를 제공합니다. 여러 개의 실인수를 하나이 매개변수로 받을 때 '*매개변수' 형식은 튜플(tuple) 자료구조로 받고, '**매개변수' 형식은 딕트(dict) 자료구조로 받습니다.

 

형식

def 함수명(매개변수, *매개변수, **매개변수) :

실습 가변인수를 갖는 함수 예시

# (1) 튜플형 가변인수
def Func1(name, *names) :
	print(name)	# 실인수 : 홍길동
    print(names)	# 실인수 : ('이순신', '유관순')

Func1("홍길동", "이순신", "유관순")

홍길동
('이순신', '유관순')

# statistics 모듈 import
from statistics import mean, variance, stdev

avg= 3
var= 2.5
std= 1.5811388300841898

# (3) 딕트형 가변인수
def emp_func(name, age, **other):
    print(name)
    print(age)
    print(other)

# emp_func 함수 호출
emp_func('홍길동', 35, addr='서울시', height=175, weight=65)

홍길동
35
{'addr': '서울시', 'height': 175, 'weight': 65}

# (1) 튜플형 가변인수

Func1() 함수는 name과 names의 매개변수를 갖습니다. name은 일반 매개변수이고, names는 가변인수의 역할을 하는 매개변수입니다. 함수 호출 부분에서  3개의 실인수("홍길도", "이순신", "유관순")를 사용하기에 맨 처음 실인수는 name 매개변수로 할당되고, 나머지 2개는 가변인수인 names 변수로 할당됩니다. 가변인수는 여러 개의 실인수를 튜플(tuple) 자료구조로 받습니다.

 

# (2) 통계량 구하는 함수

첫 번째 매개변수인 func는 함수명을 받는 역할이고, data는 가변인수 역할을 하는 매개변수입니다. 함수명에 따라서 가변인수의 통계량을 구하는 함수인데, # statis 함수 호출 부분에서 첫 번째 실인수는 '함수명'이고, 두 번째 이후는 가변인수에 할당될 5개의 숫자입니다. 함수의 호출 순서에 따라서 평균, 분산, 표준편차의 값이 출력됩니다.

 

# (3) 딕트형 가변인수

매개변수 앞부분에 '**' 기호를 붙이면 사전형 자료(key=value)를 받는 가변인수가 됩니다. #emp_func 함수 호출 부분에서 사전형 실인수(addr='서울시', height=175, weight=65)는 모두 other 가변인수가 받습니다. 덕트형 가변인수는 실인수를 딕트(dict) 자료구조로 받습니다.

 

람다 함수

람다 함수(Lambda function)는 정의와 호출을 한 번에 하는 익명함수입니다. 복잡한 함수 호출 과정을 생략해서 처리 시간이 단축되고, 코드의 가독성을 제공하는 이점을 가집니다.

 

형식

lambda 매개변수: 실행문(반환값)

람다 함수의 실행 과정은 lambda 명령어 다음에 오는 매개변수에 의해서 외부의 값을 받고, 콜론(:) 다음에는 실행문의 실행 결과가 반환됩니다. 람다 함수는 한 줄 문장 안으로 자연스럽게 삽입될 수 있어서 인라인 함수라고도 불립니다.

 

실습 람다 함수 예시

# (1) 일반 함수
def Adder(x, y):
	add = x + y
    return add

print('add=', Adder(10, 20))

add= 30

# (2) 람다 함수
print('add=', (lambda x, y: x + y)(10, 20))

add= 30

# (1) 일반 함수

매개변수 x, y를 갖는 Adder() 함수는 두 인수를 더해서 덧셈 결과를 반환하는 일반함수입니다.

 

# (2) 람다 함수

lambda 명령어 다음에 매개변수 x, y를 넣고, 콜론 다음에 덧셈 명령문을 넣어서 덧셈 결과를 반호나하는 한 줄 함수입니다.

 

스코프(scope)

스코프: 특정 지역에 의해서 구분되는 함수 또는 블록(if, for, while 등), 함수 내부에서 전역 변수를 사용하기 위한 명령문 형식입니다.

 

형식

def 함수명(인수):
           global 전역변수

실습 함수 스코프 예시

# (1) 지역변수 예
x = 50	 # 전역변수
def local_func(x):
	x += 50	# 지역변수 -> 종료 시점 소멸
local_func(x)
print('x=', x)

x= 50

# (2) 전역변수 예
def global_func():
    global x	# 전역변수 x 사용
    x += 50	# x+50 = 100

global_func()
print('x=', x)

x= 100

# (1) 지역변수 예시

함수 바깥쪽에서 선언된 전역변수 x를 실인수로 함수를 호출할 경우 함수 내부에서 x에 50을 더해서 x는 100이 됩니다. 함수 내부에서 사용한 x는 함수 내부에서만 사용되는 지역변수입니다.

 

# (2) 전역변수 예시

global_fuc() 함수에서 'global x' 명령문은 함수 바깥쪽에서 선언된 전역변수 x를 사용한다는 의미입니다. 따라서 함수 내부에서 x에 50을 더해진 값 100이 함수가 종료되어도 그대로 유지됩니다.

'Python > 실전 예제로 배우는 파이썬 프로그래밍' 카테고리의 다른 글

재귀함수(Recursive function)  (0) 2023.03.09
중첩함수  (0) 2023.03.08
사용자정의함수  (0) 2023.03.06
내장함수  (0) 2023.03.05
여러 모양의 자료 만들기 연습문제  (0) 2023.03.04