=
: 지정연산자 (assignment operator). 오른쪽에 있는 값을 왼쪽에 대입하자
⭐ 등호의 의미 ≠ 같다
= 오른쪽 값을 왼쪽에 지정해준다!
def
는 함수를 정의해주는 거지... 실행까지 해주는 건 아니다
예약어 return
은 뒤에 () 괄호 필요 없다
return
: 코드상에서 함수를 통해 값을 받기 위해서 필요. 함수에서 나오는 어떤 결과값을 받기 위해 사용!
* return
문 제대로 이해하기 *
def square(x): # 2) 스퀘어 함수에 파라미터 3 대입
return x * x # 3) x * x = 9가 나오고, return으로 인해 9 값이 반환됨
# 4. 여기 'square(3)' 부분에 9가 반환되어 print(9)가 되는거지!
print(square(3)) # 1) square 함수에 파라미터 3 부여받음
결과값
9
+ 함수를 즉시 종료시키는 기능도 있음
def square(x): # 2) 함수 파라미터에 3 대입
print("함수 시작") # 3) "함수 시작" 출력
return x * x # 4) 9 값 반환 + 💥 함수 종료시킴 💥
print("함수 종료")
# ㄴ return문에서 함수가 종료되기 때문에 print("함수 종료") 는 절대 실행될일이 없음
print(square(3)) # 1) 파라미터 3 받음
print("Hello World!")
위 코드에서 4번 줄 print("함수 종료")
는 Dead code(의미없는 코드) 라고도 한다!
< 결과값 >
함수 시작
9
Hello World!
+ print와 return 같이 쓰려면 요렇게 사용하셔요
return(print(x * x))
def print_square(x):
print(x * x) # 2) 3 * 3의 결과값 9가 print 된다
def get_square(x):
return x * x
print_square(3) # 1) 파라미터 3 받음
'''
+ 여기서 print_square(3) 가 print(print_square(3)) 이 된다면?
: 2번째 줄 결과로 9가 출력이 되고(이미 함수 내 print가 있음),
return문이 없기 때문에 print(print_square(3)) 안쪽 print_square(3) 부분에 반환되는 값이 없음.
∴ print(print_square(3)) 의 결과값은 None
'''
또 다른 케이스
def print_square(x):
print(x * x)
def get_square(x): # 1) 파라미터 3 받음
return x * x # 2) 3 * 3의 결과값 9가 return 된다
get_square(3) # 3) 9가 이 자리에 반환받고 함수 종료.
'''
get_square()함수에 print 하라는 내용이 없고,
get_square(3) 이 줄에도 print 함수가 없으므로 9를 출력하지 않는다!
만약 9 출력을 원하면 get_square(3) 줄을
print(get_square(3))으로 변경하여 출력할 수 있다!
'''
→ 파라미터에게 기본값을 설정하는 것
기본값이 있다면 함수 호출 시 파라미터에 값을 정해주지 않아도 됨!
💫 옵셔널 파라미터는 반드시 파라미터의 마지막에 작성해주기!
옵셔널 파라미터가 여러개일 경우도 가장 마지막에 나열해주기!
def myself(name, age, nationality="한국"):
# 옵셔널 파라미터는 맨 끝 항목으로 !!!
print("내 이름은 {}".format(name))
print("나이는 {}살".format(age))
print("국적은 {}".format(nationality))
myself("홍길동", 30, "호주") # 옵셔널 파라미터를 제공하는 경우
print()
myself("홍길동", 30) # 옵셔널 파라미터를 제공하지 않는 경우
<결과>
내 이름은 홍길동
나이는 30살
국적은 호주 # 기본값이 있더라도 파라미터를 따로 제공해주면 그걸로 출력되고,
내 이름은 홍길동
나이는 30살
국적은 한국 # 파라미터 요소를 따로 제공해주지 않아도 기본값을 정해주었기 때문에 기본값으로 나온당
→ 자주 쓰이는 표현을 더 간략하게 쓸 수 있게 해주는 문법
x +=
y → x = x + 2
x -=
y → x = x - 2
x /=
y → x = x / 2
x %=
y → x = x % 2
→ 변수가 사용 가능한 범위
def my_function():
⭐x = 3⭐ → 여기서 정의된 변수는 "로컬변수"라서
함수 밖에서 오류난 print(x) 결과가 3이 아님!
print(x)
my_function() # 함수 실행결과 3 출력
print(x) # 얘는 오류가 남.
# 왜? 변수 x를 정의해둔 게 없어서...
<결과>
3
NameError: name 'my_function' is not defined.
🦥 로컬변수 🦥
: 그 함수 내에서만 사용할 수 있는 변수
위 함수에서는 my_function 함수에서만 변수 x를 사용할 수 있기 때문에 오류가 발생한다.
∴ 즉, 변수 x의 scope(사용할 수 있는 범위)는 my_function 내이다.
⭐x = 2⭐ → 이번엔 함수 밖에서 변수 정의!
여기서 정의된 변수는 "글로벌변수"이다
def my_function():
print(x)
my_function() # 함수 실행결과 2 출력
ㄴ 여기서도 2가 출력될 수 있는 건 함수 밖에서 x라는 변수 정의했고,
그 변수를 함수 안에서도 사용할 수 있기 때문임
print(x) # 실행결과 2출력
<결과>
2
2
🦥 글로벌변수 🦥
: 함수 밖에서 정의한 변수. 모든 곳에서 사용 가능!
∴ 여기서 변수 x의 scope는 이 프로그램 전체
+ 파라미터도 로컬변수라고 할 수 있음
+ 함수에서 변수를 사용하면, 로컬변수를 먼저 찾고 나서 글로벌 변수를 찾기
→ 절대로 바뀌지 않는 것
✔ 규칙 : 모든 글자를 대문자로 짓기
대문자로 쓰는 이유? 🤔
1. 일반변수와 상수를 쉽게 구분
2. 실수방지(수정하지 않겠다는 의지)
<예시>
PI = 3.14 # 원주율 '파이'
ㄴ pi를 PI라고 상수로 표현하기!!!!
# 반지름을 받아서 원의 넓이 계산
def calculate_area(r):
return PI * r * r
각 회사에서 따르기로 한 스타일가이드를 따르면 코딩해야 함. 깔끔 명료하게!~!
python은 PEP8(펩 에잇)
주요 PEP8 가이드
항목 | 설명 |
---|---|
이름 | 모든 변수·함수 이름은 소문자로 작성. |
여러 단어의 경우 _ 언더바로 나누기. | |
모든 상수 이름은 대문자로 작성(동일하게 여러단어의 경우 _로 나누기) | |
a, b 이런 의미없는 알파벳보단 의미있는 단어 사용하여 변수 정하기! | |
화이트 스페이스 | 들여쓰기는 무조건 스페이스 4개 이용 |
함수 정의 | 함수 정의 위·아래로 빈 줄 두개씩 있어야 함. (파일의 첫줄에 정의된 경우 위에 없어도 됨) |
괄호 안 | 괄호 바로 안에는 띄어쓰기 X |
함수 괄호 | 함수 정의·호출 시 함수 이름과 괄호 사이에 띄어쓰기 X |
쉼표 | 쉼표 앞에는 띄어쓰기 X |
지정연산자·연산자 | 앞·뒤로 띄쓰 한번씩. (연산자의 경우 우선순위 강조 위해 연산자 앞, 뒤로 띄쓰 붙여도 됨) |
코멘트 | 코멘트 앞에 띄쓰 최소 2개 해주기. |