Python 도전기

[파이썬 입문] 함수

돌굴러가유피하세유 2022. 11. 30. 09:00
반응형

함수는 어릴때부터 수학을 배우면서 많이 접하는 단어쥬
그때를 떠듬떠듬 더듬어보면 x값을 넣으면 y값이 나오는 식의 함수가 있자나유?

프로그래밍에서의 함수도 비슷하게 생각할 수 있어유
함수식을 세우듯이 직접 정의(define)하면 필요할때 불러와서 사용하는거에유

함수의 구조는 이래유

def 함수이름(매개변수, 매개변수, ...):
    실행문장1
    실행문장2
    ...

def는 함수를 만드는 예약어, 매개변수는 함수에 입력될 값(수학시간에서 x), 함수를 실행한 결과(수학시간에서 y) 정도로 생각할 수 있어유
이때 return 명령어를 통해 값을 반환하고 함수를 종료할 수 있어유 (return 안하면 반환값도 없다는거)

결국 계산기 같은 앱들도 이런 함수들로 이뤄져있다고 생각해볼 수 있어유
쉬운 예시 하나로 이해 도와드릴께유

더보기

>>> def sum(a, b): #여기서 a, b는 매개변수(parameter), 값을 전달 받을 매개체 정도?
...     return a + b #함수의 결과로 a + b 반환
...
>>> c = sum(2, 3) #여기서 2, 3은 인수(argument), 실제 입력되는 값 정도?
>>> c
5

 

 

함수를 사용하면서 전역변수(Global Variable) 지역변수(Local Variable)에 대해 알아둘 필요가 있으니 잠깐 정리할께유
이름에서 유추할 수 있지만 전역변수는 변수를 한번 지정하면 프로그램 전역에서 사용될 수 있는 변수에유
global X와 같이 변수를 선언하면 전역변수로 사용돼유

지역변수는 함수 선언 내(지역)에서 사용되는 변수에유
함수 밖에 같은 이름의 변수가 있더라도 영향을 주지 않고 지역에서만 사용되는거에유
별다른 명령어 없이 함수 선언에서 사용되면 기본적으로 지역변수구만유

 

앞에서 자료형 공부할때 봤듯이 매개변수가 없는 함수도 있어유 (기억 안나면 복습...아시겠쥬?)
당연히 정의할 수도 있겠쥬

더보기

>>> def hello():
...      print("world!")
...
>>> hello
<function hello at 0x0000018779155630> #?! ★함수이름을 쓰면 함수가 있는 주소를 출력함
>>> hello() #이게 진짜 함수 호출
world!

 

 

함수에 입력 할 인수가 다수일때, 특히 몇개나 될지 모를때 사용하는 방법이 있어유
미친 편의성을 가진 파이썬
함수를 정의할 때 매개변수 대신 *매개변수를 입력하면 돼유
이때 *매개변수와 일반 매개변수를 혼용할 수도 있다는 점 꼭 알아두세유!

더보기

>>> def cal(*args, a):
...     if a == 'sum':
...         result = 0
...         for i in args:
...             result = result + i
...     elif a == 'multi':
...         result = 1
...         for i in args:
...             result = result * i
...     else:
...         print("뭐하라는지 몰?루")
...     return result
...
>>> cal(1,2,3,4,a='sum')
10
>>> cal(2,3,4,5,a='multi')
120


이 예시를 보고 궁금할 수 있는 부분이 하나 있어보여유
함수 호출를 할 때 a='sum' 혹은 a='multi' 라고 적은 부분일꺼라고 생각하는디 이걸 매개변수 지정이라고 해유
다수의 매개변수가 나오고나서 어떤게 a에 들어가야 될지 컴퓨터에 알려준다고 생각하시면 편해유
물론, (a, *args) 순으로 정의한다면 매개변수 지정을 할 필욘 없어유!

 

매개변수가 있다고 꼭 인수를 받을 필요도 없구먼유
매개변수에 초기값을 지정한다면 말이쥬!!

더보기

>>> def stocks(회사명, 주수, 매매='매수'):
...     print("%s %d주를 %s하시겠습니까?" % (회사명, 주수, 매매))
>>> stocks('삼성전자', 5)
삼성전자 5주를 매수하시겠습니까?
>>> stocks('SK하이닉스',10,'매도')
SK하이닉스 10주를 매도하시겠습니까?


증권사 어플에서 주식 매매할 때 문구는 이런 식으로 출력된다고 보면 되겠네유 ㅋㅋㅋ
이때도 필수로 지켜줘야 하는 문법이 있슈
초기값을 지정하는 매개변수는 반드시 미지정 매개변수보다 뒤있어야 해유
안그럼 오류나유~~~ 문법이니까유!

 

마지막으로 간단한 함수를 사용할 때 사용하는 예약어인 lambda에 대해 알아볼께유
return 필요없이 값을 반환하게 돼있고 구조는 이래유

함수이름 = lambda 매개변수, 매개변수, ... : 반환값

예시로 배워유

더보기

>>> y = lambda x : 2 * x + 5
>>> y1 = y(1)
>>> y1
7

 

 

반응형