[파이썬] 파이썬에서 함수란? (심층)
in Development on Python
파이썬에서 함수가 무엇인지에 대한 정의를 내리고 싶어서 자기전에 쭉 적어본다.
또한 다음 블로그에서는 객체에 대한 심층적인 공부가 필요할 것 같다. 일단은 함수에 대해 궁금한 점이 많아 적어본다.
- 함수란 무엇인가?
- 과일(입력) -> 믹서(함수) -> 쥬스(출력), 간단하다.
- 함수를 사용하는 이유
- 똑같은 내용을 반복할때 필요
- 매개변수와 인수
- 매개변수(parameter)와 인수(arguments)는 헷갈림,
매개변수는 함수에 입력으로 전달된 값을 받는 변수 / 인수는 함수를 호출할 때 전달하는 입력값
def add(a, b): # a, b는 매개변수
return a+b
print(add(3, 4)) # 3, 4는 인수
- 일반적인 함수
- 내가 아는 함수들
- 입력값이 없는 함수 ```python def say() : return ‘Hi’
a = say() print(a)
```python
Hi
: 입력값이 없지만 결과가 나오는 경우
- 결과값이 없는 함수
- 그냥 프린트만 뽑아낼경우
- 함수의 결과값은 언제나 하나다. (예시1)
def add_and_mul(a,b): return a+b, a*b
: 이 경우에는 (a+b, a*b) 라는 튜플값이 나온다.
(예시2)
def add_and_mul(a,b):
return a+b
return a*b
: 이 경우에는 첫 결과물만 나온다. return문을 만나면 바로 빠져나간다.
- return 단독 쓰일 때 (맨날 내가 코딩테스트 볼때 헷갈렸던거!!)
def say_nick(nick): if nick == "바보": return print("나의 별명은 %s 입니다." % nick)
: 바보라고 하면 바로 return만나서 나가게 된다. 자주쓰임.
- 매개변수에 초깃값 미리 설정
def say_myself(name, old, man=True):
: 그냥 이렇게 지정할 수 있고 False로 넣으면 바뀐다.(지정안하면 True로 간다)
- 함수 안에서 선언한 변수의 효력 범위
- 당연한 거라 적지 않겠음
- 함수 안에서 함수 밖의 변수를 변경하는 방법
(1) return 사용하기
a = 1
def vartest(a):
a = a +1
return a
a = vartest(a)
print(a)
: 잘은 이해 안되지만, return 결과값이 a(=1)로 바뀌어서 돌아가는 구조인듯
- (2) global 명령어 사용
- 비추천
- lambda
- def가 간단할 때 쓴다.
>>> add = lambda a, b: a+b >>> result = add(3, 4) >>> print(result) 7
위에와 아래가 같다.
>>> def add(a, b): ... return a+b ... >>> result = add(3, 4) >>> print(result) 7
특히 labmda는 return명령어가 없어도 결괏값을 돌려준다.