함수란?

함수(function)이란 어떤 일을 수행하는 코드의 덩어리, 또는 코드의 묶음이라고 표현할 수 있다.

  • 장점
    필요할 때마다 호출이 가능
    논리적인 단위로 분할 가능
    코드의 캡슐화 등

1. 함수 기초

def 함수 이름 (매개변수 #1 ...):
명령문 1
명령문2
return <반환값>

def: 'definition'의 줄임말로 함수의 정의를 시작한다는 의미이다.

함수 이름:
1) 소문자로 입력한다.
2) 띄어쓰기를 할 경우에는 _기호를 사용한다.
3) 작업을 나타내기 위해 동사, 명사를 함께 사용하는 경우가 많다.
4) 줄임말 대신 짧고 명료한 이름으로 정한다.

매개변수(parameter): 매개변수는 함수에서 입력값으로 사용하는 변수를 의미하며, 1개 이상의 값을 적을 수 있다.

명령문: 명령문은 반드시 들여쓰기한 후 코드를 입력해야 한다.

 

2. 함수 심화

<함수가 변수를 호출하는 방식>

종류설명
값에 의한 호출함수에 인수를 넘길 때 값만 넘김, 함수 내부의 인수값 변경 시 호출된 변수에 영향을 주지 않음
참조 호출함수에 인수를 넘길 때 메모리 주소를 넘김, 함수 내부의 인수값 변경 시 호출된 변수값도 변경됨

 
<변수의 사용 범위>

def test(t):
	print(x)
    t=20
    print('In Function:', t)
    
x=10                         
test(x)
print('In Main:', x)
print('In Main:', t)

x=10은 전역 변수(global variable), t=20은 지역 변수(local variable)
10
In Function: 20
In Main : 10
Error발생

 
<재귀 함수>

def factorial(n):
	if n==1:
    	return 1
    else:
    	return n * factorial(n-1)
        
print(factorial(int(input("input Number for Factorial Calculation: '))))

 

3. 함수의 인수

  • 키워드 인수 : 함수에 입력되는 매개변수의 변수명을 사용하여 함수의 인수를 지정하는 방법
def print_sth(my_name, your_name):
	print('Hello{0}, My name is {1}'.format{your_name,my_name})

print_sth("Sungchul", "TEAMLAB")
print_sth(your_name="TEAMLAB", my_name="Sungchul")

Hello TEAMLAB, My name is Sungchul
Hello TEAMLAB, My name is Sungchul

  • 디폴트 인수 : 매개변수에 기본값을 지정하여 사용하고, 아무런 값도 인수에 들어가지 않을 떄 지정된 기본값을 사용하는 방식
def print_sth2(my_name, your_name = "TEAMLAB"):
	print('Hello{0}, My name is {1}'.format{your_name,my_name})

print_sth2("Sungchul", "TEAMLAB")
print_sth2("Sungchul")

Hello TEAMLAB, My name is Sungchul
Hello TEAMLAB, My name is Sungchul

  • 가변 인수 : 추가 변수를 함수에 입력할 수 있도록 지원하는 방법
def asterisk_test(a, b, *args):
	return a + b + sum(*args)
    
print(asterist_test(1,2,3,4,5))

15

  • 키워드 가변 인수 : 매개변수의 이름을 따로 지정하지 않고 입력하는 방법
def kwargs_test(**kwargs):
	print(kwargs)
    print("First value is {first}".format(**kwargs))
    print("Second value is {Second}".format(**kwargs))
    print("Third value is {Third}".format(**kwargs))

kwargs_test(first=3, second=4, third=5)

{first=3, second=4, third=5}
First value is 3
Second value is 4
Third value is 5

 

profile
데이터 분석 좀 제대로 하려고 하는 비전공자의 기록일지

0개의 댓글