Python/python

검색하다가 모르던거 정리

알면 알 수록 재밌다! 2023. 7. 11. 13:55

 

1. 컴파일과 트랜스파일 차이

요약 : C언어 -> bytecode 는 컴파일, TypeScripit -> JavaScripit 는 트랜스파일

https://firstws.tistory.com/34

 

 

2. Syntatic Sugar 

문법적 기능은 그대로인데 그것을 읽는 사람이 직관적으로 쉽게 코드를 읽을 수 있게 만든다는 것

https://medium.com/analytics-vidhya/syntactic-sugar-in-python-3e61d1ef2bbf

 

 

3. pydantic과 pythonic 이란

"파이써닉"은 파이썬 코드의 가독성과 명확성을 강조하는 프로그래밍 스타일을 의미하고

"파이단틱"은 파이썬의 표현력을 최대한 활용하여 코드를 간결하게 작성하는 것

 

 

4. python lambda는 왜 multi line 을 제공하지 않는걸까?

  • 비슷한 문법인 def가 있기 때문에 제공할 필요가 없다.
  • 매개변수로 사용되는 람다의 크기를 제한하기 위해서이다.
  • 람다에서 들여쓰기로 multi line을 사용하면, 들여 쓰기 기반 블록을 포함하는 솔루션을 받아 들일 수 없다.
  • \ 같은걸로 처리해서 multi line을 사용하면 pydantic 하지 않다.
  • 파이썬은 한가지 방법으로 개발하도록 돕는 방식이기 때문에 개발하는 방식이 다양해지면 단점이 많아진다. 때문에 익명으로 써도 될만큼 간단한 로직(순수 반복)만 쓰기 위해서

https://softwareengineering.stackexchange.com/questions/99243/why-doesnt-python-allow-multi-line-lambdas

https://www.dogdrip.net/314441317

https://www.itworld.co.kr/news/235674

 

5. python 구조분해할당

객체나 배열을 변수로 '분해’할 수 있게 해주는 특별한 문법을 말한다.

https://sozerodev.tistory.com/196

 

 

6. 다양한 lambda 사용법

lambda는 리스트뿐만 아니라 딕셔너리, reduce, map, filter 등 내장함수에서도 사용가능하다.

https://www.entity.co.kr/entry/53-%ED%8C%8C%EC%9D%B4%EC%8D%AC-%EB%9E%8C%EB%8B%A4Lambda-%ED%95%A8%EC%88%98-%EB%B0%8F-%EC%98%88%EC%A0%9C

 

 

7. lambda 사용을 피해야하는 상황

  • 복잡한 로직: Lambda 표현식은 단순하고 간결한 함수를 정의하는 데 적합하지만, 복잡한 로직이나 긴 함수를 표현하기에는 적합하지 않는다. 이런 경우에는 일반적인 함수 정의를 사용하는 것이 더욱 명확하고 가독성이 좋을 수 있다.
  • 가독성이 중요한 경우: Lambda 표현식은 간단한 함수를 한 줄로 표현하는 데 적합하지만, 코드의 가독성이 중요한 경우에는 일반적인 함수 정의가 더 좋을 수 있다. 함수의 이름과 매개변수를 명시적으로 정의함으로써 코드를 이해하기 쉽게 만들 수 있다.
  • 디버깅의 어려움: Lambda 표현식은 익명 함수로 정의되기 때문에 디버깅이 어려울 수 있다. Lambda 표현식을 사용할 때는 디버깅을 위해 함수를 분리하거나, 디버깅 도구를 적절히 활용하는 등의 방법을 고려해야 한다.
  • 테스트의 어려움: Lambda 표현식은 단순한 함수이기 때문에 테스트하기가 어려울 수 있다. 함수의 로직을 독립적으로 테스트하고자 할 때는 Lambda 대신 일반적인 함수 정의를 사용하는 것이 더 편리할 수 있다.

Lambda 표현식은 간단하고 간결한 함수를 표현할 때 유용하지만, 위와 같은 상황에서는 일반적인 함수 정의를 사용하는 것이 더 좋은 선택일 수 있다. 코드의 가독성과 유지보수성을 고려하여 적절한 방식을 선택하는 것이 중요하다.

 

 

8. python 변수 초기화

var_integer = 0
var_float = 0.0
var_string = ''  # or ""
var_object = None # or list일 경우 [], dictionary일 경우 {}
var_boolean = False # or True

https://this-programmer.tistory.com/378