Coding/Python

[코드잇] 파이썬(python) 추상화(변수, 함수), return 문, 파라미터(parameter), Scope (변수 범위: global / local), 상수, 스타일

폴밴 2021. 9. 7. 16:30

변수 제대로 이해하기

  • 지정 연산자 (assignment operator)
  • 등호 "=" : 오른쪽에 있는 값을 왼쪽 변수에 지정한다.
x = 7
x = x + 1
print(x)  # 8

함수의 실행 순서

  • 함수를 정의한다고해서 함수가 실행되는 것은 아니다.
def square(x):
    return x * x

print("함수 호출 전")
print(square(3) + square(4))  # 3 * 3 + 4 * 4 = 25
print("함수 호출 후")

return문 제대로 이해하기

  • 값을 돌려주는 역할
  • 함수를 즉시 종료하는 역할
  • return문은 함수를 종료시키기 때문에 그 뒤에 있는 함수 코드는 실행되지 않는다. (데드코드)
def square(x):
    print("함수 시작")
    return x * x
    print("함수 끝")  # Dead code

print("함수 호출 전")
print(square(3))  # 3 * 3 = 9
print("함수 호출 후")

return과 print의 차이

  • return 문이 있는 함수는 결과 값이 함수에 저장된(되돌려준)다.
def get_square(x):
    return x * x

get_square(3)  # 함수에 3 저장되지만 출력은 안됨.
  • return 문 없이 print 문만 존재하는 경우 결과 값을 단순 출력할 뿐, 저장되지 않는다.
def print_square(x):
    print(x * x)  # 따로 함수로 되돌려주는 값 없이 x * x 만 출력한다. 

print_square(3)  # 3 * 3 = 9 출력

print(print_square(3))  # 함수에 return 문이 따로 없으면 return 값이 없다는 의미로 None 이 출력됨. (print_square(3) = None)

옵셔널 파라미터 (Optional parameter)

  • 함수의 파라미터에 기본 값을 설정해 두면, 함수를 호출할 때 파라미터의 값을 넘겨주지 않아도 된다.
def myself(name, age, nationality = "한국"):  # nationality 의 기본값은 "한국" 
    print("내 이름은 {}".format(name))
    print(f"나이는 {age}살")
    print("국적은 {}".format(nationality))

myself("코드잇", 1, "미국") # 옵셔널 파라미터에 값을 넣은 경우
print()
myself("코드잇", 1,)  # 옵셔널 파라미터에 값을 넣지 않은 경우 ( 기본값 "한국"이 출력)
  • 옵셔널 파라미터는 꼭 마지막에 넣어야 한다.
def myself(name, nationality = "한국", age):  # 옵셔널 파라미터는 마지막에 와야한다. (오류 발생)
    print("내 이름은 {}".format(name))
    print(f"나이는 {age}살")
    print("국적은 {}".format(nationality))

Syntactic Sugar

  • 자주 쓰이는 표현을 간략하게.
# 다음 두 줄은 같다
x = x + 1
x += 1

# 다음 두 줄은 같다
x = x * 2
x *= 2

# 다음 두 줄은 같다
x = x - 2
x -= 2

# 다음 두 줄은 같다
x = x / 2
x /= 2

# 다음 두 줄은 같다
x = x % 2
x %= 2

Scope (범위)

  • 변수가 사용 가능한 범위
  • 로컬 변수 : 변수를 정의한 함수 내에서만 사용 가능
  • 글로벌 변수 : 모든 곳에서 사용가능
  • 함수에서 변수를 사용하면, 로컬 변수를 먼저 찾고 나서 글로벌 변수를 찾음
x = 2  # 함수 밖에서 정의한 변수는 글로벌 변수 (global variable)

def my_funtion():
    x = 3  # 함수 내에서 정의한 변수는 로컬 변수 (local variable)
    print(x)

my_funtion()  # 로컬 변수 3 출력
print(x)  # 글로벌 변수 2 출력
  • 파라미터도 로컬 변수
def get_square(x):
    return x * x

print_square(3)  # 3 출력

상수

  • 상수는 이름을 대문자로 쓴다.실수를 하지 않기 위해서. (절대로 바꾸지 않겠다)
  • 일반 변수와 상수를 구분하기 위해서.
PI = 3.14 # 원주율 (상수) (constant)

def cal_area(r):
    return PI * r * r

radius = 4
print(f"반지름이 {radius}면, 넓이는 {cal_area(radius):.2f}")
radius = 5
print(f"반지름이 {radius}면, 넓이는 {cal_area(radius):.2f}")
radius = 6
print(f"반지름이 {radius}면, 넓이는 {cal_area(radius):.2f}")

스타일

이해하기 쉬운 코드 = 좋은 스타일을 가진 코드

스타일 가이드에 맞게 쓰기

  • 변수 이름을 이해하기 쉽게 사용하기.
  • 상수일 경우 이름을 대문자로 쓰기.
  • 화이트 스페이스 ( 엔터, 스페이스바 ) 사용하기.
  • 쉽게 이해할 수 있게 된다면 함수 사용하기.
PI = 3.14  # 원주율

radius = 4  # 반지름
print(2 * PI * radius)
print(PI * radius * radius)

radius = 8  # 반지름
print(2 * PI * radius)
print(PI * radius * radius)