함수를 잘 사용하고 함수를 적절하게 만들 줄 아는 사람이 능력 있는 프로그래머이다.
def add(a,b):
return a + b
여기에서 return은 함수의 결괏값을 돌려주는 명령어이다.
이제 직접 add 함수를 사용해 보자.
a=3
b=4
c=add(a,b)
print(c)
7
- 매개변수와 인수
def add(a,b): a,b는 매개변수
return a+b
print(add(3,4)) 3,4는 인수
-입력값과 결괏값에 따른 함수의 형태
def add(a,b):
result = a + b
return result
ex)
a = add(3,4)
print(a)
7
- 입력값이 없는 함수
def say():
return 'Hi'
say 라는 이름의 함수를 만들었다. 그런데 매개변수 부분을 나타내는 함수 이름 뒤에 괄호 안이 비어 있다. 이 함수는 어떻게 사용하는걸까?
a=say()
print(a)
Hi
"결괏값을 받을 변수 = 함수이름()"
- 결괏값이 없는 함수
def add(a,b):
print("%d,%d의 합은 %d입니다." % (a,b,a+b))
add(3,4)
3,4의 합은 7입니다.
즉 결괏값이 없는 함수는 다음과 같이 사용한다.
"함수이름(입력인수1, 입력인수2, ... )
결괏값이 진짜 없는지 확인하기 위해 다음 예를 직접 입력해 보자.
a = add(3,4)
3,4의 합은 7입니다.
결괏값은 오직 return 명령어로만 돌려받을 수 있다.
이를 확인해보자.
ex)
a = add(3,4)
3,4의 합은 7입니다.
print(a)
None
a값은 None이다. 이것을 가지고 결괏값이 있다고 생각하면 곤란하다.
- 입력값도 결괏값도 없는 함수
def say():
print('Hi')
say()
Hi
즉 입력값도 결괏값도 없는 함수는 다음과 같이 사용한다.
"함수이름()"
- 매개변수 지정하여 호출하기
ex)
def add(a,b):
return a+b
result = add(a=3,b=7)
print(result)
10
매개변수를 지정하면 다음과 같이 순서에 상관없이 사용할 수 있다는 장점이 있다.
result = add (b=5,a=3)
print(result)
8
- 입력값이 몇 개가 될지 모를 때는 어떻게 해야 할까?
-여러 개의 입력값을 받는 함수 만들기
def add_many(*args):
result = 0
for i in args:
result = result + i
return result
result = add_many(1,2,3)
print(result)
6
result = add_many(1,2,3,4,5,6,7,8,9,10)
print(result)
55
ex)
def add_mul(choice, *args):
if choice == "add":
result == 0
for i in args:
result = result+i
elif choice == "mul":
result = 1
for i in args:
result = result*i
return result
result = add_mul('add',1,2,3,4,5)
print(result)
15
result = add_mul('mul',1,2,3,4,5)
print(result)
120
- 함수의 결괏값은 언제나 하나이다.
def add_and_mul(a,b):
return a+b,a*b
result = add_and_mul(3,4)
result=(7,12)
result1,result2 = add_and_mul(3,4)
def add_and_mul(a,b):
return a+b
return a*b
result = add_and_mul(2,3)
print(result)
5
def add_and_mul(a,b):
return a+b
즉 함수는 return문을 만나는 순간 결괏값을 돌려준 다음 다음 할수를 빠져나가게 된다.
-매개변수에 초깃값 미리 설정하기
ex)
def say_myself(name, old, man=True):
print("나의 이름은 %s입니다." % name)
print("나이는%d살입니다." % old)
if man:
print("남자입니다.")
else:
print("여자입니다.")
say_myself("박응용",27)
say_myself("박응용",27,Ture)
나의 이름은 박응용입니다.
나이는27살입니다.
남자입니다
say_myself("박응선",27,False)
나의 이름은 박응선입니다.
나이는27살입니다.
여자입니다.
- 함수 안에서 선언한 변수의 효력 범위
# vartest.py
a = 1
def vartest(a):
a = a + 1
vartest(a)
print(a)
1
- 함수 안에서 함수 밖의 변수를 변경하는 방법
1.return 사용하기
# vartest_return.py
a=1
def vartest(a):
a = a+1
return a
a= vartest(a)
print(a)
2
2.global 명령어 사용하기
# vartest_golbal.py
a = 1
def vartest():
global a
a= a + 1
vartest()
print()
함수는 독립적으로 존재 하는 것이 좋기 때문이다. 외부 변수에 종속적인 함수는 그다지 좋은 함수가 아니다
그러모르 가급적 첫번째 방법인 return 방법을 쓰는 것이 좋다.
- lambda
lambda는 함수를 생성할 때 사용하는 예약어로 def와 동일한 역할을 한다. 우리말로 '람다'라고 읽고 def를 사용해야 할 정도로 복잡하지 않거나 def를 사용할 수 없는 곳에 주로 쓰인다.
ex)
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
lambda 예약어로 만든 함수는 return 명령어가 없어도 결괏값을 돌려준다.
출처: "점프 투 파이썬"
'파이썬 기초' 카테고리의 다른 글
04-3 파일 읽고 쓰기 (0) | 2021.03.16 |
---|---|
04-2 사용자 입력과 출력 (0) | 2021.03.16 |
03-3 for문 (0) | 2021.03.14 |
03-2 while문 (0) | 2021.03.14 |
03 -1 if문 (0) | 2021.03.14 |