• 공부한 날짜: 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 .수행시간 알아내기 

 

반복문에서 무슨 연산을 하는건지 잘 모르겠음 그냥 세는건가? 

+ Recent posts