
def
함수를 정의하는 함수이다.
반환 값, 매개변수등을 생성
1 2 3 4 5 6 | def calculate_area (radius): area = 3.14 * radius**2 return area c_area = calculate_area(5.0) | cs |
전역변수와 지역변수
1 2 3 4 5 6 7 8 9 | def get_sum(start, end): d =0 for i in range(start, end+1): d += i+sum return sum sum =12 print(get_sum(1, 10)) print("sum:",sum) | cs |
결과는 12 12 가 나온다
함수안에 sum이 없는데 사용이 가능하다. 전역변수라서 def 어디서든지 이용할 수 있다,
하지만
1 2 3 4 5 6 7 | def cal(rad): ar = 3.14*rad**2 return ar =0 r=3.0 cal(r) print(ar) | cs |
이 경우 함수에서 ar에 수를 대입했지만, 값은 0이 된다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | def get_sum(start, end): d =0 for i in range(start, end+1): d = d+i +sum sum = 55 return sum sum =12 print(get_sum(1, 10)) print("sum:",sum) print("\n") | cs |
이경우 에러가 발생한다. 왜냐
UnboundLocalError: local variable 'sum' referenced before assignment
def안에서 sum이 선언이 되었다. sum = 55라고.
하지만 선언되기 전에 sum을 사용하면 전역변수의 sum을 사용하지 못하고
지역변수의 sum을 사용해야한다, 하지만 아직 할당 되지 않은 변수를 사용하려고 했으므로 에러가 발생한다.
지역변수와 전역변수를 함수내에서 혼용하기 힘들다는 것을 알아냈다.
'Python > Python Concept' 카테고리의 다른 글
[Python] 키워드 인수 (0) | 2018.01.11 |
---|---|
[Python] 디폴트 인수 (0) | 2018.01.11 |
[Python] while (0) | 2018.01.11 |
[Python] random (0) | 2018.01.11 |
[Python] for문 (0) | 2018.01.11 |