일단 확실히 아는 내용은 디테일 하게 정리하지 않았고

조금이라도 헷갈리거나 처음 안 내용들 위주로 정리하였다


제어문

  • 조건문
  • 반복문

조건문

  • if, elif,else
  • 복수 조건문 & 중첩 조건문
  • 조건표현식

조건표현식?

조건표현식이란 일반적으로 조건에 따라 값을 정해야할 때 사용한다.

흔히 말하는 삼항 연산자라고 봐도 무방하다

간단하게 보면

‘ true인 경우 값 if condition else false인 경우 값 ‘ 이라 할 수 있다.

예시 코드를 보면

num = 123

num_if_num_is_even = num if num % 2 == 0 else 0

num이 짝수일 때 num의 값을 가진다


반복문

  • while문
  • for문
    • string, tuple,list,range를 포함한 iterable한 객체의 요소를 모두 순회
    • Dictionary는 기본적으로 key를 순회!
      • dict.keys()
      • dict.values()
      • dict.items()
    • enumerate ⇒ (index,value)
  • 리스트 컴프리헨션
  • 제어
    • break
    • pass
    • continue

함수

  • 함수 사용 이유
    • Decomposition → 기능을 분해해서 재사용 가능하게 만든다
    • Abstraction → 블랙박스 , 재사용성 , 가독성 , 생산성
  • 함수의 종류
    • 내장함수
    • 외장함수
    • 사용자 정의 함수
  • 함수 기본 구조
    • 선언과 호출
      • 선언 → def 키워드를 활용 , 들여쓰기를 통해 function body 작성, 함수는 파라미터를 넘겨줄 수 있음, return을 통해 결과값 전달
      • 호출 → 함수명() 으로 호출하여 사용 (파라미터가 있으면 ()안에 argument를 넣어준다)
    • 입력
    • 문서화
      • docstring (함수 body앞에 문자열 “”” 내용 “””)
    • 범위
    • 결과값
      • 항상 return은 하나
      • 결과값을 두 개 이상 반환하고 싶으면 return에 튜플로 반환!

return vs print

⇒조심하자

Parameter vs Argument

  • parameter : 함수를 정의할 떄 함수 내부에서 사용 되는 변수
  • argument : 함수를 호출 할 때 넣어주는 값
    • 필수 argument vs 선택 argument (기본 값이 존재)
    • positional argument (기본적으로 위치에 따라 전달 된다)
      • add(4,6) → OK
      • add(4,y=6) →OK
      • add(x=4,6) → NO!!!!!!
        • positional argument후 keyword argument여야 한다!
    • Default arguments values
      • 기본적으로 값이 지정되어 있는 것
    • Arguments의 개수가 정해지지 않을 경우?!
      • Asterisk 참고! (언패킹 , * 라는 키워드도 좋다)

가변인자 (*args)

  • 여러개의 positional argument를 하나의 필수 parameter로 받아서 사용
def multiply(*args):
	tmp = 1	
	for arg in args:
		tmp *= arg
	return tmp	
multiply(2,3) #### 6
multiply(1,2,3,4,5) ##### 120

이런식으로 가능하다

  • 패킹
    • 여러개의 데이터를 묶어서 할당!
  • 언패킹
    • 시퀸스 속의 요소들을 여러개의 변수에 나누어 할당!
    • 기본적으로 언패킹시 변수의 개수와 할당하고자 하는 요소의 개수가 동일해야함
nums = (1,2,3)
a,b,c = nums        # a에 1, b에 2, c에 3 할당

하지만 언패킹시 왼쪽의 변수에 asterisk(*)를 붙이면 나머지라는 효과를 줄 수 있ㅇㅁ

nums (1,2,3,4,5,6)
a,b,*c = nums # a에 1, b에 2, c에 [3,4,5,6]이 들어간다 
a,*b,c = nums # a에 1, b에 [2,3,4,5], c에 6이 들어간다

이러한 *를 활용한다면 가변인자를 만들 수 있음

def print_me_and_friends(my_name,*friends):
	print(f"내 이름은 {my_name}입니다")
	for name in friends:
		print(f"내 친구의 이름은 {name}입니다"

이런식으로 활용할 수 있다

가변 키워드 인자 (**kwargs)

  • 몇개의 키워드 인자를 받을지 모를 때 사용!
  • **kwargs는 딕셔너리로 묶여서 처리된다!
def student_info(**kwargs):
	for k,v in kwargs.items():
		print(k,"는",v,"살입니다")
student_info('철수'=25,'영희'=24,'민수'=22)

가변 인자와 가변 키워드 인자를 동시에 사용하려면?

가변인자,가변키워드 인자 순으로 쓴다

Python의 Scope

  • LEGB Rule!
  • 함수 내에서 바깥 scope의 변수에 접근하는것은 가능하지만 수정은 불가!
  • global관련해서는 선언 순서를 생각하자! , 그리고 parameter에 사용 불가능 하다!
  • nonlocal은 그 블록 바로 바깥의 것에서 선언된 것만 사용 가능
  • nonlocal vs global
    • nonlocal은 namespace에 존재해야함!
    • global은 그렇지 않아도 괜찮다 (없는 경우 global namespace에 새로 생기는 것이다)
  • 함수로 global과 같은 값을 바꾸고 싶다면 해당 값을 함수에 인자로 넘기고 return값을 취해 변경하자!
    • 즉, 최대한 global이나 nonlocal 키워드를 사용 하는것을 지양 하자!

map함수

  • iterable한 모든 요소에 function을 적용하고 그 결과를 map object로 반환

filter함수

  • iterable한 모든 요소에 function을 적용하고 그 결과가 true 인것을 filter object로 반환

zip함수

  • 여러 iterable객체를 모아서 각각의 원소를 합쳐서 반환

lambda함수


lambda parameters: expression

def <lambda>(parameters):
    return expression

이거하고 같은 것이다

재귀함수

  • 재귀함수란 무엇일까? 재귀함수가 물었다.
    • 재귀함수란 무엇일까? 재귀함수가 물었다.
      • 재귀함수란 무엇일까? 재귀함수가 물었다….
        • …………..

모듈과 패키지

  • 모듈
    • 파일
  • 패키지
    • 여러 파일
    • _ init _ .py 파일이 있어야 패키지로 인식 (3.3이후부터는 괜찮지만, 하위 호환을 위해!)
  • 라이브러리
    • 여러 패키지
  • 이거 관리
    • pip
      • 지금 패키지 목록을 기록 ⇒ pip freeze > requirements.txt
      • requirements.txt에 있는 것을 설치 ⇒ pip install -r requirements.txt

가상환경

  • python -m venv <폴더명> ⇒ 가상환경 생성
  • 가상환경마다 패키지라던지, 환경들이 다르다!
  • 여러 프로젝트가 동시에 진행되는데 패키지의 버전이나 그런것들이 다를 때 활용 가능!

혹시 글에 오류가 있거나, 지적 할 만한 사항이 있다면 댓글로 남겨주세요

profile
Better and better

0개의 댓글

Powered by GraphCDN, the GraphQL CDN