공감 및 댓글은 포스팅 하는데 아주아주 큰 힘이 됩니다!! 포스팅 내용이 찾아주신 분들께 도움이 되길 바라며 더 깔끔하고 좋은 포스팅을 만들어 나가겠습니다^^
|
이번 포스팅에서는 파이썬 함수에 대해 공부합니다.
함수를 사용하는 이유는 반복되는 코드가 많을 경우 그 코드를 효과적으로 사용하기 위해서
사용합니다.
함수 구조
1 2 3 4 5 | def methodName(입력 변수, 입력변수2, ... ) : 실행코드 ... ... return 반환값 | cs |
함수에는 4종류가 있습니다.
1. 입력 변수가 있고 반환 값이 없는 함수
1 2 3 4 | #입력 변수 O 반환값 X def inputOreturnX(name, age) : print("이름은 : {0} 이고, 나이는 {1}".format(name, age)) | cs |
2. 입력 변수가 있고 반환 값이 있는 함수
1 2 3 4 5 | #입력 변수 O 반환값O def inputOreturnO(name, age) : returnStr = "이름은 : {0} 이고, 나이는 {1}".format(name, age) return returnStr | cs |
3. 입력 변수가 없고 반환 값이 없는 함수
1 2 3 | #입력 변수X 반환값X def inputXreturnX() : print("이름은 : thomas 이고, 나이는 27") | cs |
4. 입력 변수가 없고 반환 값이 있는 함수
1 2 3 4 | #입력 변수X 반환값O def inputXreturnO() : str = "이름은 : thomas 이고, 나이는 27" return str | cs |
함수를 만들 때 이런 고민이 있을 수 있습니다.
입력되는 값의 갯수를 모를 때는 어떻게 하지?
예를 들어 어떤 행사를 하는데 그 날 행사에 입장한
입장객의 평균 나이를 구하는 함수를 만든다고 했을 때,
그 날 행사에 몇 명이 올지는 행사가 끝날 때까지 알 수가 없습니다.
이런 경우 *입력 변수 를 사용합니다.
1 2 3 4 5 6 7 | def audienceAvgAge(*args) : avg = 0 for i in args : avg = avg + i avg = avg / len(args) print("입장객의 평균 나이 : {0}".format(avg)) | cs |
* 커맨드창에서 args[1] 이 아니라 그냥 i 입니다.
*입력 변수 를 사용할 때 함수의 입력 변수가 꼭 *입력 변수 하나여야 하는 건 아닙니다.
입력 변수가 여러 개 일 수 있는데, *입력 변수는 꼭 가장 마지막에 사용해야 합니다.
1 2 3 4 5 6 7 8 9 10 11 | def sumOrAvg(choice, *args) : val = 0 if choice == "sum" : for i in args : val = val + i elif choice == "avg" : for i in args : val = val + i val = val / len(args) return val | cs |
--------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------
파이썬 함수의 특징
- 모든 함수의 반환 값은 하나여야 합니다.
1 2 | def sum_and_sub(i , j): reurn i + j, i - j | cs |
위 같은 함수를 선언하고 실행을 시켜보면 에러가 날 것 같지만,
실제는 그렇지 않고, 값을 2개 가지는 튜플을 반환해줍니다.
이런 두 개 이상의 반환 값들을 각각의 반환 값으로 받고 싶을 때는 아래처럼->
1 2 3 4 5 | def sum_and_sub(i , j): return i + j, i - j first, second = sum_and_sub(10, 3) print(first, second) | cs |
하지만 함수를 아래처럼 작성하면, 첫 번째 리턴만 하고 끝나기 때문에 값을 하나만 받습니다.
1 2 3 | def sum_and_sub(i , j): return i + j return i - j | cs |
함수의 입력 변수 초기 값 설정해놓기
1 2 3 4 5 6 | def sum_and_sub(i , j, sum = True): if sum: result = i + j else: result = i - j return result | cs |
이런 식으로 함수를 만들어 놓았을 경우, 마지막 입력 변수인 sum은
함수 호출 시 값을 입력 안하면 True로 기본 값이 설정됩니다.
sum_and_sub(10, 3)
sum_and_sub(10, 3, True)
위 두 호출은 같은 결과를 가져옵니다.
하지만 초기 값이 들어간 입력 변수는 입력 변수 목록 중
가장 뒤에 와야 합니다.
1 2 3 4 5 6 | def sum_and_sub(i , sum = True, j): if sum: result = i + j else: result = i - j return result | cs |
이렇게 만들 경우 에러가 발생합니다.
지역 변수와 전역 변수
기본적으로 함수 안에 선언된 변수들은 함수 안에서만 효력이 있습니다.
1 2 3 4 5 6 7 | a = 1 def vars(a): a = a +1 print(a) vars(a) print(a) | cs |
위 코드에서 vars(a)를 호출하면 2가 출력되지만
마지막 print(a)는 1이 출력됩니다.
함수 안에 호출된 변수를 전역변수로 사용하고 싶다면
아래처럼 사용하면 됩니다.
1 2 3 4 5 6 7 8 | a = 1 def vars(): global a a = a +1 print(a) vars() print(a) | cs |
여기까지 함수에 대해서 간단하게 알아보았습니다.
이상입니다.
감사합니다.
'파이썬(Python)' 카테고리의 다른 글
파이썬(python) 클래스 class (0) | 2018.01.16 |
---|---|
파이썬(python) input() 과 print() (0) | 2018.01.15 |
파이썬(python) if문, while문, for문 (0) | 2018.01.14 |
파이썬(python) 자료형의 참과 거짓, 변수란? (0) | 2018.01.13 |
파이썬(python) set 집합 자료형 (0) | 2018.01.12 |