Python/Python Concept

[Python] 함수정의 : def

군우 2018. 1. 11. 14:59

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(110))
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++sum
 
        sum = 55
 
        return sum
 
sum =12
 
print(get_sum(110))
 
print("sum:",sum)
 
print("\n")
cs

이경우 에러가 발생한다. 왜냐

UnboundLocalError: local variable 'sum' referenced before assignment


def안에서 sum이 선언이 되었다. sum = 55라고. 

하지만  선언되기 전에 sum을 사용하면  전역변수의 sum을 사용하지 못하고

지역변수의 sum을 사용해야한다, 하지만 아직 할당 되지 않은 변수를 사용하려고 했으므로 에러가 발생한다. 

지역변수와 전역변수를 함수내에서 혼용하기 힘들다는 것을 알아냈다.