작은 고양이의 캣 타워

🌟] 0. 파이썬 프로그래밍 시작하기

by J4BEZ

해당 게시물은 '코드 잇' 의 '프로그래밍 기초'를 공부하며 작성한 노트 입니다.

불완전한 게시물 이므로 언제든지 비공개로 전환될 수 있습니당

0. 인터프리터

사용자가 작성한 프로그래밍 코드를 컴퓨터가 이해할 수 있는 언어인 '머신코드'로 바꾸어주는 프로그램

 

1. 파이썬 설치

더보기
 

Download Python

The official home of the Python Programming Language

www.python.org

상단 메뉴 중에 파란색 Downloads 버튼 클릭
스크롤을 아래로 내린 뒤 컴퓨터와 맞는 버전 다운로드
(!중요) Add Python 3.9 to PATH 클릭 [환경 변수에 파이썬 경로 추가]

 

print('Hello!')


#print 함수 팁: 코드잇 '패트와매트' 님
#print 함수는 다음과 같이 이루어져 있음
#print(*objects, sep=' ', end='\n', file=sys.stdout, flush=False)
#seq = (함수의 인자들이 쉼표(,)로 연결되어 있을 때, 출력되는 문자를 지정 가능 (기본 '스페이스'[ ])
#end = print문이 끝날 때, 출력되는 문자를 지정 가능 (기본 '줄바꿈' [\n])


👉PyCharm 단축키: Window & Linux 용  ,  Mac OS 용

2. 주석(Comment)

- 복잡한 코드 설명

- 다른 개발자들과 소통

- 하다가 만 부분 표시

print('hello world') #이 부분은 코멘트

 

3. 자료형(Data type)

프로그래밍에 사용되는 다양한 종류의 '값'

자료형 종류 예시 설명
정수(Integer) -1
0
3
정수
소수[부동소수점](Floating Point) 3.14
-2.17
2.0
유리수 부분
문자열(String) "Hello"
'hello'
따옴표(' , ") 로 묶인 문장

[문자열의 + 연산은 산술 계산이 아닌 두 문자열을 이어주는 연산을 함]

ex). 1 + 1 = 2
"1"+ "1" = "11"
불린(Boolean) True
False
명제에 대한 참 과 거짓을 나타내기 위한 값


가). 숫자형(Number)

# 정수형, 정수형 연산 => 정수형 [나눗셈 제외][값이 유리수로 떨어질 때 제외 => 소수형]
# 정수형, 소수형 연산 => 소수형
# 기본적인 사칙 연산의 우선순위는 산술연산과 동일

# 덧셈 	      +
print(1 + 2)     # 3
print(1.9 + 3.1) # 5.0

# 뺄셈 	      -
print(1 - 2)     # -1
print(3 - 0.2)   # 2.8

# 곱셈		  *
print(11 * 3)    # 33
print(3.2 * 3)   # 9.6

# 나눗셈        /
# 정수형과 정수형의 연산도 나눗셈은 항상 소수형으로 나옴
print(12 / 4)    # 3.0
print(1 / 3)     # 0.3333333333333333

#나머지        %
print(5 % 3)	 # 2
print(5.0 % 3)   # 2.0

# 몫[버림나눗셈, floor division]   //
print(5 // 3)	 # 1
print(8.0 // 3)  # 2.0

# 거듭제곱     **
print(2 ** 3)    # 2^3 = 8

# 반올림(round)  round()
# 가장 가까운 정수로 반올림
round(숫자)
round(1.8)		#2.0

# 입력된 소숫점 자릿수 까지 반올림
round(숫자, 소수점자릿수)
round(3.141592, 4)
#3.1416

# 반올림 관련하여 여러 방식이 있는데, python 3.xx 부터 채택하고 있는건
# round to nearest even 이라 하여 가장 가까운 짝수로 만들기 위해 출력하게됨

round(3.5) #4
round(4.5) #4
round(5.5) #6

#절대값
print(abs(-3))    # 3

#거듭제곱
print(pow(3, 2))    # 9    3 ** 2 와 동일

#(몫, 나머지)
print(divmod(3, 2))    # (1, 1)    (x // y, x % y)

# 복소수
number = 3 + 2j    
print(number.real)    # 3   실수부
print(number.imag)    # 2   허수부
print(number.conjugate())    # 켤레복소수

python(bin(10))    # 0b1010    10진수 -> 2진수 문자열
python(oct(10))    # 0o12    10진수 -> 8진수 문자열
python(hex(10))    # 0xa     10진수 -> 16진수 문자열

# https://www.codeit.kr/community/threads/10458

> python 연산자의 우선순위

 

6. 표현식 — Python 3.9.0 문서

6. 표현식 이 장은 파이썬에서 사용되는 표현식 요소들의 의미를 설명합니다. 문법 유의 사항: 여기와 이어지는 장에서는, 어휘 분석이 아니라 문법을 설명하기 위해 확장 BNF 표기법을 사용합니

docs.python.org

 

나). 문자열(string)

같은 종류의 따옴표로 이루어진 문장

#다음과 같이 꼭 같은 종류의 따옴표(" ", ' ')로만 감싸주어야 함
"우리가 서로 사랑함은"
'그가 먼저 우리를 사랑하셨음이라'

# 같은 종류의 따옴표를 문장 내에 사용하려면 \(역슬래시)를 앞에 기입해주어야 가능
'Don\'t be afraid, I\'ll be with you'

# 혹은 ''' ''' 이나 """ """과 같이 따옴표를 세 번 써주어 만든 블록문자열을 사용하기
""" "두려워 하지 말라 내가 너와 함께함이라" """
''' '놀라지 말라 나는 네 하나님이 됨이라' '''

> 문자열 연산

# + 문자열 덧셈 [연결]
print('en' + 'courage') # 'encourage'
print('3' + '5')		# '35'

# * 문자열 곱셈 [복제]
print('문자열' * 숫자) # '문자열'을 숫자 만큼 반복하여 이어줌
print('cat' * 3)	   # 'catcatcat'

 

다). 형 변환(Type Conversion / Type Casting)

값을 한 자료형에서 다른 자료형으로 바꾸는 것

함수 역할 예시
int() float 형을 '버림' 하여 int형으로 변환
정수로된 문자열을 int형으로 변환
int(3.99)    # 3
int('3')       # 3
float() int 형을 float 형으로 변환
실수로된 문자열을 float 형으로 변환
float(3)       # 3.0
float('3.99')  # 3.99
str() 숫자형 변수를 문자열로 변환 str(3.99)      # '3.99'
str(3)          # '3'

python에선 문자열과 숫자형을 직접적으로 이어줄 수 없어서 꼭 문자열으로 꼭 형 변환 시켜준 후 이어주어야함.

month = 12
date = 25

print('성탄절은 ' + month + '월 ' + date + '일 입니다.')    # 에러 발생
print('성탄절은' + str(month) '월 ' + str(date) + '일 입니다.')
# '성탄절은 12월 25일 입니다.'

 

+ 다양한 방식을 활용한 문자열 포맷팅

JBD = '성탄절'
month = 12
date = 25

#0. 기본: str()
print( JBD +'은 '+ str(month) +'월 ' + str(date) + '일 입니다.')


#1. printf 스타일 문자열 포매팅: % 
#  "%타입" % (값)
# '%s' : 문자열, '%d' : 정수형, '%f' : 실수형 ...
print( '%s은 %d월 %d일 입니다.' % (JBD, month, date))


#2. format 메소드: str.format()
# "{}".format(값)
# {}안에 숫자를 넣어서 순서를 설정해줄 수 도 있음
print('{}은 {}월 {}일 입니다.'.format(JBD, month, date))
print('{2}은 {1}월 {0}일 입니다.'.format(date, month, JBD))


#3. f-string
# f'{변수이름}'
# 파이썬 3.6 버전 부터 사용가능
print(f'{JBD}은 {month}월 {date}일 입니다.')

 

라). 불 대수

- 수학자 '조지 불(George Boole)'의 이름을 따서 만든 2진법 논리학 수리 구조

- 일상적인 '논리'를 수학적으로 표현한 것

- 불 대수의 값: 진리 값[True, False]

- 불 대수의 기본 연산: and or not

연산 종류 x y 결과 값
AND
[x and y]
True True True
True False False
False True False
False False False
OR
[x or y]
True True True
True False True
False True True
False False False
NOT
[not x]
NOT 연산은 입력되는 값과 정 반대 값이 반환됨.  (True -> False , False -> True) True False
False True

 

마). 불린형(Boolean)

# 불린 (Boolean)
# 따옴표(", ') 없이 입력해주어야 함
print(True)
print(False)

# AND 연산: 양쪽 모두 True일 때만 True
print(True and True)  # True
# OR 연산: 양쪽 중 하나라도 True가 있을 경우 True
print(True or False)  # True
# NOT 연산: 결과 값 반전 (False -> True / True -> False)
print(not True)		  # False

 
# 기본 적인 숫자 비교 (초과, 미만, 이상, 이하, 일치 불일치)
print( 2 > 1 ) 		#True
print( 2 < -1 ) 	#False
print( 2 >= 2 )		#True
print( 3 <= 2 )		#False
print( 2 == 2 ) 	#True
print( 2 != 2 )		#False
 

# 특별한 경우(ex 괄호)가 아닐 경우엔 왼쪽에서 부터 오른쪽으로 계산
print(7 == 7 or (4 < 3 and 12 > 10))
#				 False and True -> False
#      True   or  False  -> True
# True

 

바). type 함수

- 자료형을 알려주는 함수

type(값)			# <class '자료형'>

print(type(3))		# <class 'int'>
print(type(3.0))	# <class 'float'>
print(type("3"))	# <class 'str'>

print(type("True"))	# <class 'str'>
print(type(True))	# <class 'bool'>

def hello():
    print("Merry ChristMas🌟")

print(type(hello))	# <class 'function'>
print(type(print))	# <class 'builtin_function_or_method'>   내장 함수

 

4. 추상화(Abstraction)

- 복잡한 내용은 숨기고, 주요 기능에만 신경쓰기

- 복잡한 기술을 자세히 알지 못하여도, 해당 기능을 사용가능


가). 변수(Variable):

- 값을 저장

#1. 변수 [지정 연산자(=)를 통해 오른쪽에 있는 값을 왼쪽에 있는 이름에 저장(할당)]
이름 = 값
x = 3
myAge = 23
myName = "J4BEZ"

# 추가
x = 7
x = x +1
# x 에 저장되는 값은 x에 1이 증가된 8 이 저장됨

 

나). 함수(Function):

- 행동을 저장

- 내장 함수(builtin_function_or_method): print()함수 와 같이 python 개발자들이 미리 구현해놓은 함수들

- 파라미터(Parameter): 함수의 동작에 변화를 주기 위해 넘겨주는 값

#2. 함수
함수(파라미터)
print(hello)


#함수 정의
def 함수이름(파라미터): # 이 부분을 첫 줄을 '함수의 헤더'라고 함
    함수내용
    함수내용
    
def 함수이름(파라미터1, 파라미터2):
    함수내용
    함수내용
    
def hello(name):
	print("Hello, " + name)

def returnAge(name, age):
    print(name + "is" + age + "years old")

#함수 호출
함수이름(파라미터)

hello("J4BEZ")
#Hello, J4BEZ

returnAge("J4BEZ", 23)
#J4BEZ is 23 years old

 

+ return 문:

- 함수에서 전달해주는 결과를 특정 자료형으로 반환해주는 값

[python에선 함수에 따로 return 값을 설정해주지 않으면 None이 return됨]

- 함수를 즉시 종료: pass 와 같은 역할

def square(x):
	print("함수 시작")
    return x * x		# return으로 함수는 종료됨
    print("함수 끝")	  # <- 실행되지 않는 DeadCode

 

- return과 print의 차이

return: 함수를 선언한 위치에 함수의 계산 결과를 돌려주는 키워드
print(): (괄호)안의 내용을 콘솔에 출력시켜주는 함수

def print_square(x):
	print( x * x )

def get_square(x):
	return x * x
    
print_square(3)			#print( 3 * 3 ) -> 콘솔에 9가 출력됨
#console#: 9

get_square(3)			# 3 * 3 -> get_square(3) 호출 자리에 9가 반환됨 콘솔엔 출력 X
#console#:

print(get_square(3))	# print( 3 * 3 ) -> get_square(3) 호출자리에 9가 반환됨
						# 그 이후 콘솔에 9가 출력됨
#console#: 9
                        
print(print_square(3))	#print(print(3 * 3)) -> print(3 * 3)으로 콘솔에 9가 출력됨
						# print함수는 설정된 반환 값이 없어서 None이 반환됨
                        # print(None)		 -> 콘솔에 None이 출력됨
#console#: 9
#		   None
                        

 

+ 옵셔널 파라미터(Optional Parameter)

- 파라미터에게 '기본값(default value)'을 설정해주는 것

- 기본값을 설정해두면 함수를 호출할 때 해당 파라미터엔 값을 꼭 넘겨주지 않아도 됨

- 모든 옵셔널 파라미터는 가장 마지막에 있어야함

#optional parameter
def cat(name, age, color = "노란색"):
    print(f"이름은 {name}, 현재 나이는 {age}살 이고")
    print(f"색깔은 {color}인 고양이예요")

# *args 가변 인자를 이용하는 방법
#추가로 전해지는 인자 값들이 tuple 자료구조로 전해짐
#tuple형으로 전해지기 때문에 % 포맷팅 대신 f-string 방식을 권장
def tabby_cat(name, age, *colors):
    print(f"이름은 {name}, 현재 나이는 {age}살 이고")
    print(f"색깔은 {colors}인 고양이예요")
    
# **kwargs 가변 인자를 이용하는 방법
# 추가로 전해지는 인자 값들이 dictionary = {키 : 값} 자료구조로 전해짐
#dictionary형으로 전해지기 때문에 % 포맷팅 대신 f-string 방식을 권장
def kw_tabby_cat(name, age, **colors):
    print(f"이름은 {name}, 현재 나이는 {age}살 이고")
    print(f"색깔은 {colors}인 고양이예요")
    
cat("J4BEZ", 0.2)       #옵셔널 파라미터[default parameter] 이용시
#이름은 J4BEZ, 현재 나이는 0.2살 이고
#색깔은 노란색인 고양이예요

cat("러블", 1, "회색")      #옵셔널 파라미터 변경
#이름은 러블, 현재 나이는 1살 이고
#색깔은 회색인 고양이예요

tabby_cat("고등어", 2, "검정색", "흰색")    # *args 이용
#이름은 고등어, 현재 나이는 2살 이고
#색깔은 ('검정색', '흰색')인 고양이예요

kw_tabby_cat("삼색이", 2, fur_color1 = "노란색", fur_color2 = "흰색", fur_color3 = "검정색")    #**kwargs 이용
#이름은 삼색이, 현재 나이는 2살 이고
#색깔은 {'fur_color1': '노란색', 'fur_color2': '흰색', 'fur_color3': '검정색'}인 고양이예요

 

+ 다). Syntactic Sugar

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

ex). 확장치환문 (다른 산술 연산자들도 가능)

기존 x = x + 1 x = x - 2 x = x * 3 x = x / 4 x = x % 5
sugar x += 1 x -= 2 x *= 3 x /= 4 x %= 5

- Python에선 Python 만의 Pythonic한 Synatic Sugar들이 존재함

 

+ 라). scope(변수 적용 범위)

- 변수를 사용할 수 있는 범위

- 전역 변수(global variable): 함수 밖에서 정의되어 모든 곳에서 사용 가능한 변수

# 전역 변수 [global variable]
bread = 5

def bakery():
    print(bread)  
    # 함수 안에서 전역 변수 사용가능

print(bread)    # 5
bakery()        # 5

- 지역 변수(local variable): 함수 안에서 정의된 변수로 정의된 함수 안에서만 사용 가능한 변수

#지역 변수[local variable]
def bakery()
    bread = 5
    # bakery 함수 안에서 선언한 지역 변수, bread
    # bakery 함수 안에서만 사용 가능
    print(bread)
    
bakery()      # 5
print(bread)  # NameError: name 'bread' is not defined
# 해당 지역 변수를 선언한 함수의 외부에선 접근 불가능

 

+ 마). 상수(Const, Final)

기본 적으로 Python에선 상수라는 개념이 없음
하지만 다음을 통해 비슷하게 이용할 수 있음

 

#1. 변수를 대문자로 선언

# 1. 변수를 대문자로 선언
# 하지만 java나 c#의 final이나 const 처럼
# 수정 할 수 없는 상수가 아닌
# 사용자간의 약속

PI = 3.141592

 

#2. 함수로 선언하기

#2. 함수로 선언하여 return 하도록 하기

def PI():
	return 3.141592
    

print(PI())
# 3.141592

PI() = 3
#SyntaxError: cannot assign to function call

 

#3. Python3.8에서 추가된 방법(typing.Final)

from typing import Final

a: Final[int] = 1

# Executes fine, but mypy will report an error if you run mypy on this:
a = 2
MAX_SIZE: Final = 9000
MAX_SIZE += 1  # Error reported by type checker

class Connection:
    TIMEOUT: Final[int] = 10

class FastConnector(Connection):
    TIMEOUT = 1  # Error reported by type checker

 

 

Final names, methods and classes - mypy 1.8.0 documentation

Previous TypedDict

mypy.readthedocs.io

 

 

typing — Support for type hints

Source code: Lib/typing.py This module provides runtime support for type hints. For the original specification of the typing system, see PEP 484. For a simplified introduction to type hints, see PE...

docs.python.org

---

블로그의 정보

작은 고양이의 캣 타워

J4BEZ

활동하기