개발 (Development)
-
1. Introduction 파이썬을 주로 쓰는 사람은 알겠지만 파이썬은 대표적인 타입리스 언어이다. 따라서 변수에 숫자가 몇 자리든 그냥 대입하면 대입하는 대로 초기화된다. 하지만 파이썬에도 엄연히 암묵적으로 변수의 타입을 정해두고 있다. 그 중에는 코더에게 친숙한 int가 있다. 그럼 여기서 의문이 생긴다. c나 자바같은 언어에서는 int의 범위가 4바이트로 제한되어 있다. 파이썬도 암묵적으로라도 타입이 있다면 오버플로우가 나지 않을까? 2. practice 파이썬3를 기준으로 정수의 최댓값은 sys의 maxsize로 알아낼 수 있다. 또한 type메서드는 암묵적인 변수의 타입을 알아낼 수 있는 메서드이다. a = int(sys.maxsize) print(a, type(a)) a += 1 print(..
파이썬에서 int로 캐스팅한 변수는 오버플로우가 날까?1. Introduction 파이썬을 주로 쓰는 사람은 알겠지만 파이썬은 대표적인 타입리스 언어이다. 따라서 변수에 숫자가 몇 자리든 그냥 대입하면 대입하는 대로 초기화된다. 하지만 파이썬에도 엄연히 암묵적으로 변수의 타입을 정해두고 있다. 그 중에는 코더에게 친숙한 int가 있다. 그럼 여기서 의문이 생긴다. c나 자바같은 언어에서는 int의 범위가 4바이트로 제한되어 있다. 파이썬도 암묵적으로라도 타입이 있다면 오버플로우가 나지 않을까? 2. practice 파이썬3를 기준으로 정수의 최댓값은 sys의 maxsize로 알아낼 수 있다. 또한 type메서드는 암묵적인 변수의 타입을 알아낼 수 있는 메서드이다. a = int(sys.maxsize) print(a, type(a)) a += 1 print(..
2020.08.11 -
1. Introduction 파이썬 코드를 보다보면 함수의 인수로 *, **가 있는 것을 볼 수 있다. 이것들은 이 메서드에 인수를 몇개를 보낼지 모르겠을 때 쓰는 것이다. 메서드에 일단 인수를 갖다 박으면, *는 튜플로 **는 딕셔너리의 형식으로 묶어서 전달한다. 2. Practice def star(*a): print(a) def double_star(**b): print(b) star(1, 2, 3) double_star(a=1, b=2, c=3)
*(star), **(double star) 파라메터는 뭐하는데 쓰는 걸까?1. Introduction 파이썬 코드를 보다보면 함수의 인수로 *, **가 있는 것을 볼 수 있다. 이것들은 이 메서드에 인수를 몇개를 보낼지 모르겠을 때 쓰는 것이다. 메서드에 일단 인수를 갖다 박으면, *는 튜플로 **는 딕셔너리의 형식으로 묶어서 전달한다. 2. Practice def star(*a): print(a) def double_star(**b): print(b) star(1, 2, 3) double_star(a=1, b=2, c=3)
2020.08.11 -
1. Introduction 다른 사람의 코드를 보다가 이런 것을 발견했다. def _from_rgb(rgb): """translates an rgb tuple of int to a tkinter friendly color code """ return "#%02x%02x%02x" % rgb rgb 튜플을 tkinter에 맞는 색상 코드로 바꾸는 함수랜다. 2. Analysis c에서 printf 문자열 포맷팅한 사람은 알겠지만 %는 문자열 뒤에 인수로 대체하겠다는 뜻이다. 16진수는 보통 x로 표현하는데 02x는 2자리를 사용할 것이며, 빈자리는 0으로 채우겠다는 의미이다. 맨 앞에 #은 그냥 의례적으로 16진수 색상 코드앞에 붙이는 듯하다. 내가 놀란 것은 튜플안에 개수가 맞기만 하면, 인수들이 문자열..
RGB 색상을 16진수 코드로 변환1. Introduction 다른 사람의 코드를 보다가 이런 것을 발견했다. def _from_rgb(rgb): """translates an rgb tuple of int to a tkinter friendly color code """ return "#%02x%02x%02x" % rgb rgb 튜플을 tkinter에 맞는 색상 코드로 바꾸는 함수랜다. 2. Analysis c에서 printf 문자열 포맷팅한 사람은 알겠지만 %는 문자열 뒤에 인수로 대체하겠다는 뜻이다. 16진수는 보통 x로 표현하는데 02x는 2자리를 사용할 것이며, 빈자리는 0으로 채우겠다는 의미이다. 맨 앞에 #은 그냥 의례적으로 16진수 색상 코드앞에 붙이는 듯하다. 내가 놀란 것은 튜플안에 개수가 맞기만 하면, 인수들이 문자열..
2020.08.10 -
1. Introduction c++ 강의를 마친 후, 파릇파릇한 신입생이 메일로 질문을 했다. 내용은 trivial한 내용이었는데, 다음과 같았다. c와 c++ 둘다 printf를 쓸 수 있더라, printf와 std::cout의 차이점이 무엇이냐. std::endl과 \n의 차이점이 무엇이냐. using namespace std를 쓰면 바로 cout, cin 이렇게 쓸 수 있는데, 책에서는 이렇게 쓰면 굉장히 위험하다고 한다. 왜 그런 것인가? 2. Answer 첫번째 질문은 어렵지 않게 답할 수 있다. 다음은 내가 학생에게 한 답변이다. 정확하게는 iostream에 printf와 std::cout이 모두 정의되어 있음. printf는 원칙적으로는 문자열 밖에 출력할 수 없음. 정수, 실수를 표현하려면..
Using namespace를 남발하면 안되는 이유1. Introduction c++ 강의를 마친 후, 파릇파릇한 신입생이 메일로 질문을 했다. 내용은 trivial한 내용이었는데, 다음과 같았다. c와 c++ 둘다 printf를 쓸 수 있더라, printf와 std::cout의 차이점이 무엇이냐. std::endl과 \n의 차이점이 무엇이냐. using namespace std를 쓰면 바로 cout, cin 이렇게 쓸 수 있는데, 책에서는 이렇게 쓰면 굉장히 위험하다고 한다. 왜 그런 것인가? 2. Answer 첫번째 질문은 어렵지 않게 답할 수 있다. 다음은 내가 학생에게 한 답변이다. 정확하게는 iostream에 printf와 std::cout이 모두 정의되어 있음. printf는 원칙적으로는 문자열 밖에 출력할 수 없음. 정수, 실수를 표현하려면..
2020.05.25