변수 제대로 이해하기
- 지정 연산자 (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)
- 파이썬 : PEP8
- PEP 8 -- Style Guide for Python Code