[python]

May·2022년 6월 18일
0

python_기초

목록 보기
4/11

😵‍ 변수 제대로 이해하기

= : 지정연산자 (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))

😵‍ return과 print의 차이

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살
국적은 한국  # 파라미터 요소를 따로 제공해주지 않아도 기본값을 정해주었기 때문에 기본값으로 나온당

😵‍ Syntactic sugar

→ 자주 쓰이는 표현을 더 간략하게 쓸 수 있게 해주는 문법

x += y → x = x + 2
x -= y → x = x - 2
x /= y → x = x / 2
x %= y → x = x % 2

😵‍ Scope

→ 변수가 사용 가능한 범위

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는 이 프로그램 전체

+ 파라미터도 로컬변수라고 할 수 있음
+ 함수에서 변수를 사용하면, 로컬변수를 먼저 찾고 나서 글로벌 변수를 찾기

😵‍ 상수(constant)

→ 절대로 바뀌지 않는 것

✔ 규칙 : 모든 글자를 대문자로 짓기

대문자로 쓰는 이유? 🤔
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개 해주기.

profile
ฅ˘◡˘ฅ

0개의 댓글