- 공부한 날짜: 2021.11.24
Part 01
- Python Variable scope : scope, global, nonlocal, locals, globals
- 전역변수(global variable)는 주로 변하지 않는 고정 값에 사용
- 지역변수 사용 이유: 함수 내에 로직 해결에 국한할 수 있어서
- 지역변수 소멸주기: 함수 실행 해제 시
- 전역변수를 지역내에서 수정하는 것은 권장되지 않음

-전역변수는 함수 내에서 이용할 수 있고, 바로 출력도 가능하다

-30으로 출력됨(함수 안에 있는 로컬변수 먼저). 다른하나는 전역변수로 출력

- 변수가 선언되기 전에 참조하면 UnboundlocalError 발생

-global 키워드 사용하면 전역변수 메소드 내에서 사용가능. 근데 자주 사용하면 안된다고 함
-global d 밑에 d=60 없어야지 더 잘 설명이 될 것 같음

-nonlocal n : 현재의 scope내의 지역변수가 아니고, 전역변수도 아닌 변수 n을 사용할 때 사용한다. 나는 지금 지역변수는 아닌 변수를 사용하려할 때 쓰면 된다. ( 출처: https://juhi.tistory.com/6)


-print(locals()): 지역정보 전체 출력
-print(globals()): 전역 전체 출력
-'test_variable'=100이 gloabal()에 추가된다. 내부적으로 globals()['test_variable']=100이 내부적으로 실행된것임

Part 02
- Lambda, Reduce, Map, Filter Functions
- lambda의 장점: 익명, 힙 영역에서 사용 즉시 소멸, 파이썬 가비지 컬렉션(count=0), 한번만 쓸 함수에 주로 사용
- 일반함수: 재사용성 위해 메모리에 저장함
- 시퀀스형 전처리에 Reduce, Map, Filter 주로 사용
- Lambda 함수

-제곱수 구하는 함수 : Lambda 이용, map()이용

-짝수구하는 함수 : filter() 이용, filter+lambda

-더하기 함수: reduce() 이용

Part 03
- Shallow copy, Deep copy
- 객체 복사 종류: copy, shallow copy, deep copy
- 정확한 이해 후 사용 -> 프로그램 개발 중요(문제 발생 요소)
- 가변: List, set, dict
- immutable: int,str,float,bool,unicode,,,
-Copy 종류: call by value, call by reference, call by share
- -Call by Reference: 복사한 객체 수정하면 원본 객체의 데이터도 수정된다

a_list 와 b_list는 같은 객체 참조해서 id 동일하다

b_list 값 수정하면 a_list의 값도 수정된다

- Shallow Copy(얕은 복사)


얕은 복사를 하면 각자 다른 객체에다 저장하게된다


그래서 d_list의 값을 변경해도 c_list의 값이 변경되지 않는다


하지만 저장하는 객체는 다르지만 리스트 안의 리스트의 값은 동일하다. -> 이 리스트이 값 변경하면 둘다 변경된다. [4][1]인덱스 값 확인
- Depp Copy


두 리스트가 저장된 객체가 다르다는 걸 알 수 있다


f_list 안의 리스트를 변경해도 e_list의 값은 변경되지 않는다.
Copy of Reference, shallow copy, deep copy 중에서 상황에 가장 적절한 방법을 사용하면 된다
Part 04
- Context Manager : 원하는 타이밍에 정확하게 리소스를 할당, 제공, 반환하는 역할을 한다
- Contextlib, __enter__, __exit__, exception
- 가장 대표적인 With 구문 이해
- 정확한 이해 후 사용하는 것이 프로그래밍 개발에 중요
- __x__: 인스턴스가 초기화될때 파이썬에서 정해진 규칙대로 호출되는 형태의 메소드(매직/스페셜 메소드)
- txt파일 만들고 그 안에 텍스트 입력하는 3가지 방법
1. try~ finally로 구현하기

2. with ~ as 문으로 구현

3. 함수 직접 만들어서 구현

Part 05 .수행시간 알아내기


'Dev Language > Python' 카테고리의 다른 글
[파이썬_3] #3. 메타클래스/동적클래스 생성/메타클래스 상속/Descriptor (0) | 2021.11.26 |
---|---|
[파이썬_3] #2. Decorator/Underscore/Getter&Setter/Overriding/Overloading/Dispatch (0) | 2021.11.25 |
[파이썬 중급]#6_1. AsyncIo 멀티스크래핑 실습 (0) | 2021.11.18 |
[파이썬 중급]#5_4. future, wait, as_completed (0) | 2021.11.18 |
[파이썬 중급]#5_3. Futures 동시성 (0) | 2021.11.18 |