일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- django rest framework
- django ORM
- MAC
- 파이썬 알고리즘
- 파이썬
- java
- Django
- 장고
- web
- 알고리즘
- react
- Git
- js
- Baekjoon
- django widget
- PYTHON
- form
- AWS
- 알고리즘 연습
- HTML
- javascript
- c++
- 알고리즘 풀이
- Algorithm
- 알고리즘 문제
- 백준
- API
- CSS
- DRF
- es6
- Today
- Total
목록프로그래밍 언어/Python (13)
수학과의 좌충우돌 프로그래밍
정적언어 VS 동적언어 Type Hints 에 대해서 알아보기 전에 우선 정적언어와 동적언어에 대한 이해가 필요합니다. 정적언어 컴파일 시 변수의 타입이 결정 변수 선언 시 자료형 지정 C, Java 등의 언어가 해당 동적언어 런타임 시 변수의 타입이 결정 실행 도중 변수에 예상하지 못한 타입이 들어와 Type Error 발생할 수 있음 python, javascript 등의 언어가 해당 Type Hints란 python은 대표적인 동적언어입니다. 그렇기 때문에 변수를 선언할 때, 함수가 매개변수를 받을 때 모두 자료형을 지정하지 않습니다. 위에서 말한대로 런타임 시 결정되기 때문에 실행 도중에 예상하지 못한 타입이 들어와 Type Error 발생할 수 있죠. Type Hints 는 이를 방지하고자 타입..
파이썬에서 멀티스레드를 사용하려고 한다면 GIL이란 단어를 마주치게 됩니다. GIL이 무엇인지 파이썬은 왜 GIL을 가지고 있는지 이번 포스팅을 통해 이해해보도록 합시다. Python으로 멀티스레딩 GIL이 무엇인지 설명 하기 전에 python으로 멀티 스레딩과 일반적인 경우의 시간을 비교해보겠습니다. 시간을 측정하기 전, 현재 테스트 중인 환경을 알아봅시다. 프로세서 : 2.3 GHz 듀얼 코어 Intel Core i5 >> sysctl hw.physicalcpu hw.logicalcpu hw.physicalcpu: 2 hw.logicalcpu: 4 MacOS의 하이퍼스레딩이란? 하이퍼 스레딩이란? 랜덤으로 생성한 배열에서 최대값을 찾는 간단한 연산을 두 가지 방법으로 구현해보았습니다. 하나의 스레드가..
Float 우선 특별한 작업없이 소수를 사용할 경우 이는 float 타입으로 선언이 됩니다. 하지만 아래 결과를 보면 0.1을 할당한 a는 실제로 0.1이 아닌 많은 소수점을 가지고 있습니다. 왜 이런 문제가 발생하는 것일까요? a = 0.1 print(type(a)) print(f"{0.1: .30f}") # # 0.100000000000000005551115123126 컴퓨터가 실수를 표현하는 방식 아마 다들 아실테지만 컴퓨터는 기본적으로 2진수를 사용합니다. 그렇기 때문에 정수를 표현할 때는 문제가 되지 않지만 소수를 표현할 때는 문제가 발생합니다. 예를 들어 10진수 0.3을 2진수로 표현한다고 하면 0.01001100110011... 다음과 같이 표현이 됩니다. 무한히 0011이 반복되죠. 이러..
Tim Sort python에서의 정렬 함수 sorted()와 list.sort()에 사용된 정렬 알고리즘은 Timsort, 팀정렬입니다. 팀정렬은 파이썬 핵심 개발자인 팀 피터스에 의해서 Cpython에서 처음으로 구현되었으며 2009년 이후 표준 자바 및 안드로이드, swift 등 여러 언어에서 사용되고 있습니다. 이는 데이터의 정렬된 정도에 따라 삽입정렬과 병합정렬 사이를 전환하는 적응형 알고리즘입니다. 두 정렬방법을 결합했기에 안정적이며, 추가 메모리는 사용하지만 기존의 병합정렬에 비해 적은 추가메모리를 사용하여 다른 O(nlogn) 정렬 알고리즘의 단점을 최대한 극복한 알고리즘입니다. 알고리즘의 원리 위에서 언급했듯이 팀정렬은 삽입정렬과 병합정렬을 함께 사용하고 있습니다. 병합정렬은 추가적인 메..
언패킹이란 간단히 두 수를 더하는 함수를 만들어보겠습니다. def mysum(a,b): result = a+b return result print(mysum(3,5)) # 8 mysum 이라는 함수는 두 수를 인자를 받은 후 두 수를 더해 return 해주는 함수입니다. 다음 함수를 이용하여 아래와 같이 리스트 안에 있는 두 수의 값을 더해줄 수도 있습니다. def mysum(a,b): result = a+b return result mylist = [3,5] print(mysum(mylist[0],mylist[1])) # 8 우리는 mylist 안에 값이 두 개 있는 걸 알고 있어서 mysum 함수에 리스트를 매개변수를 넣어주면 편하겠지만 이 함수는 해당 리스트 안에 값이 몇 개 존재하는지 알지 못합니..
python 으로 작성된 다른 코드들을 보다보면 아래와 같이 어느 함수 위에 @ 가 있는 걸 볼 수 있습니다. 이 @ 는 무엇을 나타내고 어떤 역할을 하지는 알아보도록 합시다. @decorator def function1(): print("ssungkang") decorator 란? 제목에서 알 수 있듯이 이것이 바로 decorator 입니다. 사실 데코레이터가 없다고 해서 구현을 못하는 일이 생기는 건 아니지만 코드가 복잡해집니다. 즉 사용자가 편리해지기 위한 것 이라고 생각하면 됩니다. 지금부터 decorator 에 대해서 알아보도록 하겠습니다. decorator 는 사실 하나의 함수입니다. 어떤 함수냐면 다른 함수를 감싸고 있는 함수죠. 아래 예시를 봐보도록 합시다. def decorator(fun..
파이썬 제너레이터 일반적인 함수부터 생각을 해보자. 함수는 한 번 호출되면 return을 만날 때까지 혹은 return이 없다면 마지막 구문을 만날 때까지 실행된다. 그리고 호출이 끝나는 순간 내부 함수나 로컬 변수들은 메모리를 반환하게 된다. 이는 함수가 다시 호출되어도 마찬가지로 같은 일을 반복한다. 이런 함수의 한계점에 봉착하여, 함수가 본인이 한 일을 기억하고 있다가 재 호출 시 이어서 할 수 있도록 새로운 함수를 만들었는데 이를 제너레이터라고 한다. 제너레이터가 무엇인지 예제를 통해서 알아보자. def normal_function(list): result = [] for i in list: result.append(i * i) return result input = [1,2,3,4,5] resu..
안녕하세요 강민성입니다. 오늘은 파이썬 기본 문법에 대해서 알아보고자 합니다. 그 중에서도 map 함수에 대해서 알아보겠습니다. 저는 알고리즘 공부를 하다가 map 함수가 도움이 많이 되었습니다. 어떤 함수인지 같이 살펴보시죠! map 함수에 대해서 알아보자! map 함수는 두 가지 인자를 받게 됩니다. 첫 번째 인자로 함수를 받게 되고, 두 번째 인자로 반복가능한 자료형을 받게 됩니다. map(function , iterable, ...) 같은 형태를 가집니다. 그리고 iterable 한 데이터 안의 각 item들을 함수 인자로 전달하여 결과를 반환하는 함수입니다. 여기서 반환 형태에 대해 기존 python2 에서 python3 으로 바뀌면서 변화가 있었습니다. 기존 python2에서는 list형으로 ..
안녕하세요 강민성입니다. 파이썬 알고리즘을 공부하다가 헷갈린 부분이 있어 가볍게 포스팅을 하고자 합니다. find와 index를 알아보자! 문자열에서 find와 index는 거의 같은 역할을 합니다. 바로 문자열에서 원하는 문자나 문자열이 어디 있는지를 알려주는 것이죠. 위치를 반환할 때는 index 값을 반환하게 됩니다. 1234a = "ssungkang" print (a.index("k")) # 5print (a.find("k")) # 5cs 다음과 같이 문자열 a에서 k를 찾고자 한다면 그에 해당하는 index 값을 return 하게 되는 것이죠. 그렇다면 둘의 차이는 무엇일까요? 차이 역시 간단합니다. find 같은 경우에는 찾는 문자나 문자열이 없을 경우에는 -1 을 return 하게 됩니다. ..
안녕하세요 강민성입니다. 오늘은 파이썬 변수의 유효 범위에 대해서 알아보도록 하겠습니다. 먼저 scoping rule 이란 변수의 접근이 가능한 범위를 뜻합니다. 이 scope를 결정하는 방식에는 크게 두 가지로 나눌 수 있는데 static scoping 과 dynamic scoping 입니다. 그 중에서 dynamic scoping 에 대해서 알아보도록 하겠습니다. dynamiic scoping를 사용하는 대표적인 예가 바로 python 이죠. 그래서 python 언어를 통해 알아보겠습니다. 파이썬에서 변수는 4가지 경우가 존재합니다. LEGB 가 각각에 해당되는데 이에 대해서 먼저 알아보도록 하겠습니다. Local : 함수 내부의 공간 Enclosing Function Local : 함수를 내포하는 ..