이번 시간에은 파이썬 divmod 메서드에 대해 알아봅시다. x와 y를 받으면 x를 y로 나눈 몫과, 나머지가 들어있는 tuple을 리턴하게 됩니다. 튜플은 for in으로 순회 가능합니다. 이를 이용해서 여러가지 작업을 해 보도록 하겠습니다. 이걸 어디에 써 먹을 수 있을까요? 7을 3으로 나눈 몫과 나머지를 구해야 한다고 생각해 봅시다. 저는 처음에 이런 식으로 썼었습니다. 7 // 3과 7 % 3을 썼었습니다. 7 / 3을 쓰지 않았음에 주의하세요. 7 / 3의 결과는 7을 3으로 나눈 몫인 2가 아닌 2.333..이 나오게 됩니다. 결과는 2 1이 나옵니다. 문제는 저렇게 쓰기가 귀찮다는 것입니다. 이런 귀찮음을 해결하기 위해, divmod를 쓴다는 것을 최근에야 알게 되었습니다. 이 메서드의 리..
코딩 검색 결과
진법은 항상 귀찮습니다. 예를 들어 10진수의 '12345'의 값을 10진수로 출력하거나, 16진수의 '12345'의 값을 10진수로 출력하거나. 이 귀찮음을 해결할 방법이 없을까요? 파이썬에는 int가 있습니다. 사실 저는 단순히 문자열을 정수로 변환하기 위해서 쓰는 줄로만 알았습니다. 이걸 잘 이용하면 k진수를 10진수로 바꿀 때, 대소문자가 오는 경우에 자릿수를 계산하는 귀찮은 처리를 덜 수 있습니다. 예제 몇 개를 보면서 이해해 보도록 하겠습니다. 먼저, 36진수로 표현된 'abcde', 'ABCDE'를 10진수로 바꿉니다. 다음에, 2진수로 표현된 '10110'을 10진수로 바꿉니다. 여기서, base 인자가 들어간 것이 있고, 들어가지 않은 게 있습니다. base 인자가 들어가면, 1번째 인자..
python에서 zip 함수는 유용하게 쓰일 수 있는 메서드 중 하나입니다. 어떻게 쓰이는지 간단하게 예제를 보겠습니다. zip 메서드에 대한 설명을 보면, Iterable한 것을 여러개 받게끔 되어 있습니다. 뭐가 뭔지 모르겠으니, 설명에서 예제로 나온 것 부터 해석해 보도록 하겠습니다. list(zip('abcdefg', range(3), range(4)))를 보시면, iterable한 것이 3개나 들어왔음을 알 수 있어요. str, 범위, 범위 이렇게요. 그런데, 결과가 [('a', 0, 0), ('b', 1, 1), ('c', 2, 2)]가 최종적으로 나왔습니다. 여기서 유추할 수 있는 것 하나는, zip 메서드가 병렬적으로 iterator를 돌림을 알 수 있습니다. 'abcdefg', range..
GIL과 lock에 대해 공부하다 보면, 연산이 atomic하다. 그렇지 않다 이야기는 많이 들을 듯 싶습니다. a += 1 같은 것도 사실 바이트 코드로 보면 몇 개의 연산으로 이루어져 있을 겁니다. c python에서 한 줄의 코드에 어떤 바이트 코드들이 들어 있는지 간단하게 확인하는 방법이 없을까요? dis 모듈을 이용하시면 편하게 하실 수 있습니다. 저는 문서에 나 온 것 중, dis 함수만 언급하겠습니다. 나중에, 다른 것이 필요하다면 따로 보는 게 좋을 듯 싶어요. dis 모듈은 뭔지는 잘 모르겠어요. 그런데, Disassembler가 나오고, byte code가 나오는 걸로 보아서는 파이썬 코드를 기계어나, 혹은 바이트 코드로 변환하는 역할을 하는 모양새입니다. 여기에 있는 모듈 중에 우리가..
파이썬을 다루시다 보면 한 번 쯤 GIL에 대해서 들어본 적이 있을 겁니다. 그리고, 이에 대한 문서를 보면, jython이나 iron에는 GIL이 없다는 것을 알 수 있는데요. 이렇게 구현체마다 다른 특성을 가지는 경우가 있어요. 그래서, 버전과 함께 구현체를 확인하는 방법을 알아보려고 해요. python을 하는데, Jython을 쓰는지 pypy를 쓰는지, cpython을 쓰는지 모르면 말이 안 될 거고요. 이 질문의 답을 보면, platform을 써 보라고 합니다. platform을 import 해 보겠습니다. 여기에는, platform identifying data를 얻어오기 위한 모듈임을 알 수 있어요. function API를 통해서, information을 만들어 낸다는 이야기도 같이 덧붙이고..
최근댓글