defadd(a,b):## a 와 b는 add라는 함수를 작동시키기 위한 변수 return a+b ## 함수 이름은 ad고 입력으로 2개의 값을 받으며, 결과값은 2개의 입력값을 더한 값이다.
# 메인 프로그램
a=3 b=4 c=add(a,b) print(c)
# Or
result=add(a=3,b=4) print(result)
# Or
result=add(b=3,a=4) ## 변수 이름만 맞추면 변수 순서가 바뀌어도 작동된다. print(result)
7
7
7
1 2 3 4
# 입력값이 없는 함수
defsay(): return'Hi'
1 2
a=say() print(a)
Hi
1 2 3
# retrun(결과값)이 없는 함수 defadd(a,b): print("%d + %d = %d"%(a,b,a+b))
1
add(3,4)
3 + 4 = 7
1 2 3 4 5 6 7 8 9
# 입력값이 몇 개가 될지 모를 때는?
# 여러 개의 입력값을 받는 함수
defadd_many(*arg):# '*' 는 임의의 여러 변수 지정 result=0 for i in arg: result=result+i # *arg에 입력받는 모든 값을 더한다. return result
1 2
result = add_many(1,2,3,4,5) print(result)
15
1 2 3 4 5 6 7 8 9 10 11 12
# 사칙 연산 선택 가능
defadd_mul(choice, *args) : if choice =='add': ## choice 매개변수가 add 일 경우 result = 0 for i in args: result = result+i elif choice =='mul': ## choice 매개변수가 mul 일 경우 result = 1 for i in args: result = result*i return result
1 2 3 4 5
result = add_mul('add',1,2,3,4) print(result)
result2 = add_mul('mul',1,2,3,4) print(result2)
10
24
1 2 3 4 5 6
# 함수의 결과값은 항상 하나 # 함수 결과값은 언제나 하나이기에 오류가 나는 것이 아니라 (7,12)라는 하나의 튜플 값으로 돌려준다. defadd_mul (a,b): return a+b,a*b
result = add_mul(3,4) print(result)
(7, 12)
1 2 3 4 5 6 7 8 9
# 매개변수에 초기값 미리 정하기
defsayself(name,old,man=True):## 초기값 "Ture(or something)" 의 경우 변수 가장 끝에 지정하지 않으면 에러가 발생한다. print("이름 %s" %name) print("나이 %d" %old) if man: print("남성") else: print("여성")
1
sayself("박응",27,True)
이름 박응
나이 27
남성
1
sayself("박선",27,False)
이름 박선
나이 27
여성
1
sayself("박응",27) ## 초기값이 True로 설정되어있다.
이름 박응
나이 27
남성
함수에서 매우 중요한 부분
1 2 3 4 5 6 7 8
# 함수 안에서 선언한 변수의 효력 범위
a = 1# 함수 밖의 변수 a defvartest(a):# 여기서 a는 함수 안에서 a라서 함수 안에서만 작동한다. 함수 밖과는 다른 셀이다. a=a+1 vartest(a) # 여기서 입력값 a는 함수 바깥 a=1을 입력한다는 의미 print(a) # 함수에서 a+1 = 2 가 되었지만 retrun도 없고 함수 안에서의 a만 a=2이 되었다. 메인 셀에서 a는 여전히 1이다.
1
1 2 3 4 5 6 7 8 9
# 함수 안에서 함수 밖의 변수를 변경하는 법
a = 1 defvartest(a): a=a+1 return a # 메인 프로그램 지정변수에 결과값을 돌려준다. a = vartest(a) # 결과값을 지정변수 a에 대입 print(a)
2
1 2 3 4 5 6
# lambda (한줄 함수) 'lambda 매개변수1,매개변수2, ...: 매개변수를 사용한 표현식'