일단 확실히 아는 내용은 디테일 하게 정리하지 않았고
조금이라도 헷갈리거나 처음 안 내용들 위주로 정리하였다
제어문
조건문
- 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)
- 리스트 컴프리헨션
- 제어
함수
- 함수 사용 이유
- 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)
multiply(1,2,3,4,5)
이런식으로 가능하다
- 패킹
- 언패킹
- 시퀸스 속의 요소들을 여러개의 변수에 나누어 할당!
- 기본적으로 언패킹시 변수의 개수와 할당하고자 하는 요소의 개수가 동일해야함
nums = (1,2,3)
a,b,c = nums
하지만 언패킹시 왼쪽의 변수에 asterisk(*)를 붙이면 나머지라는 효과를 줄 수 있ㅇㅁ
nums (1,2,3,4,5,6)
a,b,*c = nums
a,*b,c = nums
이러한 *를 활용한다면 가변인자를 만들 수 있음
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 <폴더명> ⇒ 가상환경 생성
- 가상환경마다 패키지라던지, 환경들이 다르다!
- 여러 프로젝트가 동시에 진행되는데 패키지의 버전이나 그런것들이 다를 때 활용 가능!
혹시 글에 오류가 있거나, 지적 할 만한 사항이 있다면 댓글로 남겨주세요