반응형

1. return문

- 함수 호출 부분(return call)을 return을 따르는 값으로 대체 

- 현재 함수 실행 멈추고 함수 호출 끝나는 지점부터 다시 진행

def f(x):
    print("F 시작")
    return x+1
    print("f 끝"//return x+1이 실행되고나서, f함수의 실행은 중단되고 함수가 
                    불러온 print(f(2))의 뒷부분부터 파이썬 다시 진행
                    -> dead code라고 함
 
 
def g(x):
    print("g 시작")
    return x*x-1
    print("g끝")
 
print(f(2)) // = print(3)
print(g(3// = print(8)
print(f(2+ g(3)) // print(3+8)
 
>>
f 시작
3
g시작
8
f시작
g시작
11
cs


2. return VS print

1) 사례 1

def print_square(x): //파라미터 제곱 출력, 리턴값 지정되어있지 않으므로 함수 리턴 값 = none
    print(x * x)
  
def get_square(x): //파라미터 제곱 리턴, 출력값 X
    return x * x
 
print_square(3)    // print(x*x)에 의해 9 출력
print("----------"
get_square(3)       // return 문에 의해 9로 대체, 그러나 대체된 값을 출력하라는 명령 x -> 아무것도 출력X
print("----------")
print(get_square(3)) //get_square 함수의 return 문에 의해 대체된 값을 출력하는 명령 -> 9 출력
print("----------")
print(print_square(3)) //print_square함수의 print(x*x)에 의해 9 출력 , 함수 호출 부분은 리턴값 대체
                       // 함수 리턴 값은 none -> none도 함께 
cs


2) 사례 2

def secret_number():
    print("우리의 비밀번호는 = ")
    return 486
 
print(secret_number())
 
>> 우리의 비밀번호는 =
486
 
//함수정의 건너뛰고 print문 도착 -> secret_number()라는 함수 호출 때문에, 다시 정의로 올라감
//첫번째 프린트문 출력 -> 486리턴 명령 O -> 
//1.함수 실행 중단 , 2. 함수 호출한 secret_number()라는 부분 486로 대체되어 출력
cs


3) 사례 3

//함수 내부에서 print문과 return문의 순서가 바뀌었다면?
 
def secret_number():
    return 486
    print("우리의 비밀 번호는: ">> dead code
 
print(secret_number())
 
>>486만 출력됨
>>왜? 486리턴되서 함수 실행이 종료 
cs


3. global vs local 변수

1) local 변수

-함수 안에서 사용하는 변수는 일반적으로 함수 내부에서만 유효하여 함수 밖에서는 쓸 수 없음

def x_is_one():
    x = 1
 
= 5 //x를 함수 바깥으로 빼면 함수 바깥에 정의된 5가 
x_is_one()
print(x)
 
>>5
cs


2) global 변수

-함수 안의 x와 함수 밖의 x가 통일하려면 

- 하나의 변수를 다른 여러 함수안에서 사용하고 싶을때, 함수 내 변수가 global 변수라고 표시해줘야함

def x_is_one():
    global x
    x =1
 
=5
x_is_one()
print(x)
 
>>1
cs


3) 사례 1

def next_number():
    global x
    x = x+1
 
=0 
next_number()
print(x) 
 
>>1
cs


## 여러 함수에서 통일된 global 변수를 쓰면 프로그램 전체에 영향을 줄 수도 있으니 주의!


4. 상수(global 변수의 좋은 예)

-프로그램 내내 변화하지 않는 변수 값 

-처음에 값을 정의하고 나서 끝날때 까지 계속 같은 값을 갖고 있는 것

/ 꼭 대문자로 정의 / 이름만 대문자로 쓴 변수 일 뿐, 함수 안에서 다시 정의해도 오류 X


PI = 3.14   # 원주율
 
def calculate_area(r):
    return PI * r * r
 
radius = 6    # 반지름
print("반지름이 %.2f면 원 넓이는 %.2f" % (radius, calculate_area(radius)))
 
 
radius = 12   # 반지름
print("반지름이 %.2f면 원 넓이는 %.2f" % (radius, calculate_area(radius)))
 
>>반지름이 6.00면 원 넓이는 113.04
반지름이 12.00면 원 넓이는 452.16
cs


5. 코드를 짤 때는 누구나 보기 쉽게 해야하는 스타일이 존재!

#이름 규칙 : 모든 변수, 함수 이름은 소문자 / 여러 단어일 경우 _로 나누기

#모든 상수 이름은 대문자/ 여러 단어일 경우 _로 나누기

#의미있는 변수 , 함수 이름 

# bad
= 2
= 3.14
print(b * a * a)
 
# good
radius = 2
pi = 3.14
print(pi * radius * radius)
cs

#화이트 스페이스 : 적당한 띄어 쓰기, 엔터키

#적당한 추상화, 적당한 코멘트 

# good(설명이 부족하거나 많지 않음)
PI = 3.14   # 원주율
 
# 반지름이 r인 원의 둘레 계산
def calculate_circumference(r):
    return 2 * PI * r
 
# 반지름이 r인 원의 넓이 계산
def calculate_area(r):
    return PI * r * r
 
# 반지름이 r인 구의 부피 계산
def calculate_volume(r):
    return 4 / 3 * PI * r * r * r
 
# 반지름이 4인 경우
radius = 4    # 반지름
print(calculate_circumference(radius))
print(calculate_area(radius))
print(calculate_volume(radius))
 
# 반지름이 8인 경우
radius = 8    # 반지름
print(calculate_circumference(radius))
print(calculate_area(radius))
print(calculate_volume(radius))
cs

#적당한 줄 길이 : 한 줄에 80자는 넘지 말자


##퀴즈 

짝수인지 홀수인지 판단해주는 is_evenly_divisible 함수를 쓰세요. 

is_evenly_divisible는 number(수)를 파라미터로 받습니다. 
짝수인 경우에는, 즉 number가 2로 나누어 떨어질 경우에는 True를 리턴해줍니다. 
홀수인 경우에는, 즉 number가 2로 나누어 떨어지지 않을 경우에는 False를 리턴해줍니다. 

함수 안에는 print문을 사용하시면 안 되고, return문을 사용하여야 합니다. 
'불린' 개념을 사용하면, 함수 단 '한 줄'로 쓸 수 있습니다!



def is_evenly_divisible(number):
  return(number % 2 == 0)
 
print(is_evenly_divisible(3))
print(is_evenly_divisible(7))
print(is_evenly_divisible(8))
cs


반응형

'Language Study > Python' 카테고리의 다른 글

6. 모듈  (0) 2019.07.15
5. 제어문  (0) 2019.05.22
3. 추상화  (0) 2019.04.06
2. 자료형  (0) 2019.03.30
1. Python 시작하기  (0) 2019.03.28

+ Recent posts