파이썬 심화 문법

니나노개발생활·2021년 4월 19일
0

🏃🏻‍♀️bootcamp

목록 보기
3/18

지난 기초 문법에 이어 심화 문법에 대해서 알아보자!
아직은 기초에 기반한 코드를 많이 접하겠지만 알아 두면 좋은 것들이니 정리해두고 나중에 한 번 더 체크해두는걸로!

튜플과 집합

튜플

리스트형과 비슷하게 생겼지만 불변인 자료형이다.

ppl1=[{'name':'bob','age':27},{'name':'john','age':30}] >> 리스트형!
ppl2=[('bob',27),('john',30)]  >> 튜플형!

집합

말 그대로 집합을 구현한다.
중복을 제거해준다는 장점!

a=[1,2,3,4,5,6,7,8,4,1]
a_set=set(a)
print(a_set)            >> {1, 2, 3, 4, 5, 6, 7, 8}

교집합/합집합/차집합

a=[1,2,3,4,5,6,7,8,4,1]
b=[11,12,13,14,15,16,4,6,3,20]

a_set=set(a)
b_set=set(b)

print(a_set & b_set) #교집합    
print(a_set | b_set) #합집합
print(a_set - b_set) #차집합    

f-string

scores = [
    {'name':'영수','score':70},
    {'name':'영희','score':65},
    {'name':'기찬','score':75},
    ...}
    
for s in scores :
    name = s['name']
    score = s['score']
    print(name +'의 점수는 ' +str(score)+'점입니다.')
    
    # 영수의 점수는 70점 입니다. 라고 프린트 하고 싶음!

📍 score는 숫자이기 때문에 문자열로 변형해줄 str(score)이 필요하다.
위 처럼 코드를 짰을 경우 요소가 많으면 헷갈릴 수 있어 이 때 f-string을 사용한다.

print(f'{name}의 점수는 {score}점입니다.')

📍 문자열로 변형하여 작성하기가 훨씬 수월하다!

예외처리

🚨실제 프로젝트 남용하는 것은 금물! 어디서 에러가 났는지 알 수 없다🚨

for person in people:
    try:
        if person['age'] > 20:
            print(person['name'])
    except:
        print(person['name'], '에러입니다.')

📍 people list에서 어느 dict에 데이터 하나가 없다면?
try 구문으로 돌다가 예외가 있으면 expept로 빠져랏!

파일 불러오기

from 불러 오고 싶은 파일 import 불러올 함수 / 전체인 경우 *

💡 막연히 임포트 해온다는 의미가 가져온다는 거라고 생각하고 있었는데 이런 식으로 파일명과 함수를 쓰는 원리에 대해 알게 되었다! 아하!

한 줄의 마법

if 구문

num =3

if num % 2==0:
    result='짝수'
else:
    result = '홀수'

🧙🏻‍♀️ result =('짝수' if num % 2==0 else '홀수') #괄호 없어도 가능!

for 구문

a_list=[1,3,2,5,1,2]
b_list=[]

for a in a_list:
    b_list.append(a*2)  # 빈 칸으로 넣은 b_list에 a*2값을 넣어줌

🧙🏻‍♀️ b_list=[a*2 for a in a_list]

아래 과정부터는 우선은 간단하게만 인지해두기!

map,lambda,filter

def chk_adult(person):
    return ('성인' if person['age'] > 20 else '청소년' )
    
result=map(chk_adult,people)
📍 people을 돌면서 chk_adult에 넣어 나온 리턴값을 리스트로 묶음
>>여기에 list()로 묶어주던지 print 시 list()로 묶음

result=map(lambda person:('성인' if person['age'] > 20 else '청소년' ),people)
📍 함수를 굳이 만들지 않고 한 줄로 해결!
  >> 깔끔하게 코딩할 수 있을 것 같은데 아직은 이해하기에 많이 어려운듯하다ㅠㅠ..!

result= filter(lambda x:x['age']>20,people)
📍 조금 더 직관적이고 유용함!
>>리스트의 모든 원소 중 특별한 것만 뽑을 때 사용!

print(list(result))
📍 list로 묶어줌!

클래스

📍 클래스(class)란 똑같은 무엇인가를 계속해서 만들어 낼 수 있는 설계 도면이고(과자 틀), 객체(object)란 클래스로 만든 피조물(과자 틀을 사용해 만든 과자)을 뜻한다.

  • 객채는 고유의 특성을 가지고 서로 영향을 주지 않는다.
>>> a = Cookie()

a는 객체 / a는 Cookie의 인스턴스

class monster():
    hp = 100
    alive = True

    def damage(self,attack):      # 메서드의 첫 번째 매개변수는 반드시 self를 지정해야 한다.
        self.hp = self.hp - attack
        if self.hp < 0 :
            self.alive =False

    def status_chk(self):
        if self.alive == True:
            print('살았따')
        else:
            print('죽었따')

m1 = monster()
m1.damage(150)
m1.status_chk()

🥲 확실히 심화 문법이여서 그런지 같은 강의를 세네번 반복해서 들어도 약간 알쏭달쏭하다..!
클래스의 경우 self로 지정하는 부분이 헷갈려 구글링을 해보았다.

메서드 안에서 메서드 호출하기

  • 메서드 안에서 메서드를 호출할 때는 self.메서드() 형식으로 호출해야 합니다. self 없이 메서드 이름만 사용하면 클래스 바깥쪽에 있는 함수를 호출한다는 뜻이 되므로 주의해야 합니다.

음..아직은 그래도 잘 모르겠다 ㅎㅎㅎㅎ

profile
깃헙으로 이사중..

0개의 댓글