파이썬 강의 1일차
int num = 10;
String str = "hello world!!"
num = 10
str = "hello world!!"
언어마다 컨벤션(약속)이 다르다
팀으로 프로젝트를 하기때문에 변수를 선언하거나 코드를 작성할때 사용하기로한 약속
네이밍 컨벤션
Pascal : PythonIsVeryGood
/ 각 단어를 대문자로 구별합니다. 파이썬
Snake : python_is_very_good
/ 각 단어를 언더바( _ )로 구분합니다. (뱀과 비슷한 모양 ) 파이썬
Camel : pythonIsVeryGood
/ Pascal과 동일하지만, 첫 문자가 소문자로 시작합니다. ( 쌍봉낙타와 비슷한 모양 )
상수 표현할때는 예외적으로 모든 문자로 대문자로 표현을 한다.
리스트 사용시 복수 사용하기 : 리스트 속 내용물 표현시 낱개로 표현 가능
for number in numbers
: 반복문 사용 시 가독성을 늘릴 수 있습니다.def add(a, b): return a + b 함수를 네이밍할 때는 해당 함수가 어떤 역할을 하는지 표현해야 한다.
class : 첫글자 대문자 (Pascal)
함수 : _ (Snake)
변수 : _ (Snake)
상수 : 모두 다 대문자
확장자 추천 : 아스키독, 오토 독 스트링,장고 인텔리전쓰, 독커,깃엔즈, 깃 히스토리
list_ = [1,2,3,4]
integer ( int )
float
String
list
numbers = [1, 2, 3, 4, 5]
tulpe
numbers = (1, 2, 3 ,4, 5)
set
numbers = {1, 2, 3, 4, 5}
dic
members = {”1”: “lee”, “2”: “park”, “3”: “kim”}
{key: value}
쌍으로 이루어짐boolean
flag = True
와 같이 사용True
혹은 False
두 값만 사용변수가 선언된 위치 나 키워드에 따라 변수를 사용할 수 있는 범위가 달라지는것.
지역변수 , 전역변수
지역변수
전역변수
파이썬 강의 2일차
사칙연산
: integer와 float 자료형에서 활용
x + y
: 더하기 x - y
: 빼기x * y
: 곱하기x ** y
: 제곱(x의 y제곱)x / y
: 나누기 ( int와 int를 나누더라도 연산 결과는 항상 float이 나온다. ) x // y
: 나머지 없는 나누기, 어떤 값을 나누더라도 항상 정수로 떨어진다.5 // 2 -> 2
, 4 // 2 -> 2
, 4.0 // 2.0 -> 2.0
x % y
: 나머지를 구하는 연산8 % 3 -> 2
, 5.0 % 2.0 -> 1.0
string
: 문자열 에서는 +와 * 지원
a = "hello "
b = a * 3 # b 변수에 문자열을 반복해서 저장
print(b)
>>>" hello hello hello "
list
list 선언 시 list안에 들어있는 각 요소는 0부터 차례로 index 번호를 가진다
# index slicing 기능을 활용해 원하는 값들 가져오기 alphabets = ["a", "b", "c", "d", "e", "f"]
# alphabets의 index가 0보다 크거나 같고 4보다 작은 요소 출력 print(alphabets[0:4]) >> ['a', 'b', 'c', 'd'] # alphabets 의 0, 1, 2, 3 index가 출력됨
#역순으로 출력 print(alphabets[::-1]
len() 함수를 사용해 list의 길이를 구할수 있습니다.
numbers = [1, 2, 3, 4]
print(len(numbers)) # 4
값을 원하는대로 추가, 수정, 삭제
numbers의 마지막 자리에 6 추가
numbers = [1, 2, 3, 4, 5, 6]
numbers에서 1이라는 값을 가진 요소 삭제
numbers = [2, 3, 4, 5, 6]
numbers의 마지막 요소(6)의 값을 7로 변경
numbers = [2, 3, 4, 5, 7]
list에서 마지막 요소 삭제 후 변수에 할당
last_num = 7
numbers = [2, 3, 4, 5]
numbers = [1, 2, 3, 4]
print(len(numbers)) # 4
tuple
numbers = (1, 2, 3, 4) print(len(numbers)) # 4
set
# 중복된 값을 포함하지 않기 때문에 5는 하나만 저장 numbers = {1, 2, 3, 4, 5, 5} >>> numbers = {1, 2, 3, 4, 5} # set 자료형은 index를 사용해 값을 가져올 수 없음 print(numbers[0])
numbers = (1, 2, 3, 4)
print(len(numbers)) # 4
: 특정값의 자료형을 조건이 맞을경우 자유롭게 변환가능
string -> int
list -> tuple -> set
sample_list = [1, 2, 3, 4, 5] sample_tuple = tuple(sample_list) sample_set = set(sample_tuple) print(sample_list) print(sample_tuple) print(sample_set) >>> [1, 2, 3, 4, 5] (1, 2, 3, 4, 5) {1, 2, 3, 4, 5}
any -> sting
def 함수명()
형태로 선언import "파일명"
frome
frome 파일명 import (함수/변수/가저올것) : 특정한 (함수/변수/가져올것) 가져오기
frome 파일명 import * : 모든 함수 import
# a.py
def a_funtion():
print("execute a")
# main.py / case 1
from a import a_funtion # a 파일에 있는 a_funtion을 import
# 이 경우 위 예제와 다르게, a.a_funtion가 아닌 a_funtion으로 사용한다.
a_funtion() # execute a
# main.py / case 2
from a import * # a 파일에 있는 모든 함수를 import
a_funtion() # execute a
다른 폴더에 있는 파일 import
# folder/b.py
def b_funtion():
print("execute b")
# folder/c.py
def c_funtion1():
print("execute c1")
def c_funtion2():
print("execute c2")
# main.py
from folder import b
from folder.c import *
b.b_funtion() # execute b
c_funtion1() # execute c1
c_funtion2() # execute c2
변수 import해서 사용하기
# 다른 파일의 변수 또한 함수와 동일한 방법으로 from / import를 사용할 수 있습니다.
# folder/b.py
PIE = 3.14
HELLO = "world"
# main.py / case 1
from folder.b import * # *권장X* 존재하는 모든 변수 import
print(PIE) # 3.14
print(HELLO) # "world"
# main.py / case 2
from folder.b import PIE, HELLO # 사용 할 변수를 각각 import
print(PIE) # 3.14
print(HELLO) # "world"
# main.py / case 3
from folder import b # *권장O* b 파일 import
print(b.PIE) # 3.14
print(b.HELLO) # world
비어있는 string, list 등은 분기문에서 False로 판단
empty_string = ""
empty_list = []
if not empty_string:
print("string is empty!!")
if not empty_list:
print("list is empty!!")
bool( ) : 특정값이 True인지 False인지 확인
파이썬 강의 3일차
while / for
for
enumerate( )
: 반복되는 요소가 몇번째인지 확인
members = ["lee", "park", "kim"]
for i, member in enumerate(members):
print(f"{member}는 {i}번째 회원입니다.")
# result print
>>> lee는 0번째 회원입니다.
park는 1번째 회원입니다.
kim는 2번째 회원입니다.
로또번호 뽑는 코드 작성
from pprint import pprint
import random
def lotto_number_genetator(count):
# 빈 리스트 생성
result = []
if count < 1:
print("1 이상의 값을 입력 해주세요")
# 입력된 count수 만큼 로또를 살것이다.
for _ in range(count):
lotto_numbers = set() # 중복된 값이 없돍 set() 사용
while len((lotto_numbers)) < 8: #0~7까지 이므로 8개 선언됨
lotto_numbers.add(random.randint(1, 45))
result.append(lotto_numbers)
return result
lotto_numbers = lotto_number_genetator(5)
pprint(lotto_numbers)
파이썬 강의 4일차
클래스 선언 : 과자 틀을 만드는것
instance
함수 : class 밖에있는 메소드
메소드 : 클래스 내에 선언된함수, 클래스 함수
self : 메소드를 선언할 때에는 항상 첫번째 인자로 self 를 넣어줘야한다. class 한정 전역변수
_init_ 함수 (initialize : 초기화)
_ @@ _
mutable : 값이 변한다.
list
immutable : 값이 변하지 않는다
string
파이썬 강의 5일차
긴 코드를 간략하게 줄일 수 있다
list, set, tuple, dict 자료형에서 사용 가능
list
numbers = [x for x in range(5)] # [0, 1, 2, 3, 4]
조건문
even_numbers = [x for x in range(10) if x % 2 == 0] # [0, 2, 4, 6, 8]
활용 #list 축약식의 []를 ()혹은 {}로 바꿔주면 tuple, set 축약식을 사용하실수 있다.
people = [
("lee", 32),
("kim", 23),
("park", 27),
("hong", 29),
("kang", 26)
]
average_age = sum([x[1] for x in people]) / len(people)
print(average_age) # 27.4
dictionary 축약식 활용
# dictionary 축약식의 구조는 list와 동일하지만, key / value 형태로 지정해야 합니다.
people = [
("lee", 32, "man"),
("kim", 23, "man"),
("park", 27, "woman"),
("hong", 29, "man"),
("kang", 26, "woman")
]
people = {name: {"age": age, "gender": gender} for name, age, gender in people}
print(people)
# result print
"""
{
'lee': {'age': 32,
'gender': 'man'},
'kim': {'age': 23,
'gender': 'man'},
'park': {'age': 27,
'gender': 'woman'},
'hong': {'age': 29,
'gender': 'man'},
'kang': {'age': 26,
'gender': 'woman'}
}
"""
lambda
map
map은 함수와 리스트를 인자로 받아 리스트의 요소들로 함수를 호출
string_numbers = ["1", "2", "3"]
integer_numbers = list(map(int, string_numbers))
print(integer_numbers) # [1, 2, 3]
map 함수를 사용하지 않는 경우
string_numbers = ["1", "2", "3"]
integer_numbers = []
for i in string_numbers:
integer_numbers.append(int(i))
print(integer_numbers) # [1, 2, 3]
list 축약식 활용
string_numbers = ["1", "2", "3"]
integer_numbers = [int(x) for x in string_numbers]
print(integer_numbers) # [1, 2, 3]
map & lambda 함께 사용
numbers = [1, 2, 3, 4]
double_numbers = list(map(lambda x: x*2, numbers))
print(double_numbers) # [2, 4, 6, 8]
파이썬 강의 6일차
인자에 기본값 지정해주기
# 함수를 선언할 때 인자에 기본값을 지정해줄 수 있습니다.
EXPRESSION = {
0: lambda x, y: x + y ,
1: lambda x, y: x - y ,
2: lambda x, y: x * y ,
3: lambda x, y: x / y
}
def calc(num1, num2, option=None): # 인자로 option이 들어오지 않는 경우 기본값 할당
"""
option
- 0: 더하기
- 1: 빼기
- 2: 곱하기
- 3: 나누기
"""
return EXPRESSION[option](num1, num2) if option in EXPRESSION.keys() else False
print(calc(10, 20)) # False
print(calc(10, 20, 0)) # 30
print(calc(10, 20, 1)) # -10
print(calc(10, 20, 2)) # 200
print(calc(10, 20, 3)) # 0.5
args / kwargs
list 혹은 dictionary의 값을 함수에 입력할 때 주로 사용
list 에서 사용
def add(*args):
result = 0
for i in args:
result += i
return result
numbers = [1, 2, 3, 4]
print(add(*numbers)) # 10
"""아래 코드와 동일
print(add(1, 2, 3, 4))
"""
dicrionary에서 사용
def set_profile(**kwargs):
profile = {}
profile["name"] = kwargs.get("name", "-")
profile["gender"] = kwargs.get("gender", "-")
profile["birthday"] = kwargs.get("birthday", "-")
profile["age"] = kwargs.get("age", "-")
profile["phone"] = kwargs.get("phone", "-")
profile["email"] = kwargs.get("email", "-")
return profile
user_profile = {
"name": "lee",
"gender": "man",
"age": 32,
"birthday": "01/01",
"email": "python@sparta.com",
}
print(set_profile(**user_profile))
""" 아래 코드와 동일
profile = set_profile(
name="lee",
gender="man",
age=32,
birthday="01/01",
email="python@sparta.com",
)
"""
# result print
"""
{
'name': 'lee',
'gender': 'man',
'birthday': '01/01',
'age': 32,
'phone': '-',
'email': 'python@sparta.com'
}
"""
객체를 모델링 하는 방향으로 코드를 작성하는것
캡슐화
추상화
상속
다형성
@property
데코레이터를 붙이면 그 인스턴스 메서드는 ( )을 붙이지 않고도 호출 할 수 있다.@property
가 붙은 메소드는 값을 얻을때 호출되기때문에 getter
라고도 불린다.