[compare] 값이나 변수들을 비교할 수 있는 연산자에 대해 알아보자 A > BA가 B 보다 크다A >= B A 가 B 크거나 같다A 0: print("+") elif n == 0: print("0") else: print("-") else if 를 쓰지 말고 elif 를 써서 조건을 바로 명시해 주자 양수가 아닌것중에 0과 동일한것 이라는 조건이 된다. 마지막 else 는 위에 모든 조건일 아닐때 라는 뜻이 된다 이 경우도 3개..
[type: 타입] 변수는 데이터를 담는 그릇이다. 그 내용물에 따라서 변수의 타입은 달라진다. 타입에는 크게 정수(int), 부동소수점(float), 문자열(str), 논리(bool) 가 있다. [정수] 정수는 말 그대로 소수가 없는 0, 1, 2, 3, 4, ... 같은 수를 의미 한다. 이것은 서로 사칙연산이 가능하다. 나눗셈을 한 결과는 부동소수점(float) 이 되고 나머지 3개 연산의 결과는 정수 그래도 유지된다. print(type(1), type(1+2), type(1-2), type(1*2), type(1/2)) 출력 [부동소수점] 1.23, 423.543 같은 실수 이다. 이것도 사칙연산이 가능하고 이것들의 결과도 부동소수점 그대로이다. print(type(1.0), type(1.0+2..
함수 호출 방식에서 call of value 는 함수에 값을 넘겨주는 것이고 call of reference 는 함수에 주소를 넘겨주는 것이다. 파이썬에서는 이것이 어떻게 동작하는 지 알아보자 함수에 인자 값을 넘겨 주고 그 함수에서 해당 인자를 수정해 보자def foo(a): a = 10 n = 1 foo(n) print(n) n 은 몇이 출력 될까? 1 이 출력된다. 이유는 a 변수에 값 1이 할당되고 a 을 10 으로 변경하였지만 foo 함수가 종료되는 시점에 foo 함수안에 a 이라는 변수는 해제된다. 그리고 함수밖에 n은 그대로 1 이다. [id] 이것을 실제로 확인해 보기 위해 id 라는 함수를 이용해보자 id 는 객체의 고유 주소값을 리턴하는 함수이다. 예를 들어 a, b 가 주소값이 서로 ..
파이썬에서 스레드를 사용하여 여러 기능을 동시에 실행하는 것처럼 보여줄 수 있습니다. 하지만 스레드를 사용하는 데는 크게 3가지 문제가 있습니다. 1. 스레드들이 서로 안전하게 동작하도록 조율하려면 특별한 도구가 필요합니다. 따라서 스레드를 사용하는 코드가 절차적인 싱글 스레드 보드보다 이해하기 어렵습니다. 또한 이런 복잡성 때문에 시잔이 지날수록 스레드 코드를 확장하거나 유지보수 하기 어렵습니다. 2. 스레드에는 메모리가 많이 필요합니다.(스레드당 약 8MB정도). 많은 컴퓨터에서 스레드를 수십 개 가량 실행할 때는 문제가 되지 않습니다. 하지만 프로그램이 함수 수천 개를 동시에 실행한다면 문제가 발생합니다. 이러한 함수는 사용자가 서버에 보내는 요청, 화면의 픽셀, 시뮬레이션의 입자에 대응할지도 모릅..
딕셔너리 타입의 자료형을 알아보자 mutable 로 수정 가능하고 key, value 을 하나의 요소로 갖는 자료형이다. 기본 형태는 다음과 같다.d = {"name": "bmw", "cost": 100000, "cc":"3000"} print(d) [추가]d["model"] = "520d" [삭제]del d["model"] d.pop("model") [keys, values, items] keys, values, key 와 value 를 하나의 item 으로 한 items 를 다음과 같이 접근할 수 있다.d = {"name": "bmw", "cost": 100000, "cc":"3000"} print(list(d.keys())) print(list(d.values())) print(list(d.item..
리스트를 완전히 알고 있다고 가정 하였을 때 리스트와의 차이점은 immutable 이냐 mutable 이냐 이다 리스트는 변경 가능하고 튜플은 변경 불가능하다. 나머지 slicing 이나 인덱스로 접근, iterable 한 객체가 갖는 기능들은 거의 동일하다. 그리고 새롭게 할당은 되지만 요소의 수정은 할 수 없다. 튜플은 immutable 이기 때문이다. t = (1, 2, 3)이렇게 초기화 할수 있다. t[0] = 99특정 인덱스로 접근해서 값을 수정할 수는 없다
인스턴스를 복사할 때는 같은 주소값을 바로보는 얇은 복사 다른 주소값을 바로보는 서로 영향을 받지 않는 깊은 복사가 있다. 이것은 immutable 객체에서는 얇은 복사가 별로 신경 쓸 필요가 없고 mutable 객체에서만 얇은 복사되는것을 조심하면 된다. 어차피 immutable 은 얇은 복사여도 변경 불가능한 immutable 이기 때문이다. [shallow copy: 얇은 복사] immutable 객체는 건너뛰고 mutable 객체를 살펴 보겠다. a = [1, 2, 3] b = a print(id(a), id(b)) a 를 b 에 할당 하고 id 함수를 통해 a, b 의 주소값을 출력하였다. 둘다 동일하게 나온다. 같으 주소를 가르키고 있는 것이다. a = [1, 2, 3] b = a a[0] =..
클래스의 인스턴스는 기본적으로 attribute storage 를 위한 딕셔너리를 가지고 있다(여기서 attribute 는 instance attribute인듯?, attribute:변수) 이로 인해 인스턴스 변수가 별로 없는 경우 객체의 공간을 낭비한다. class Stack: __slots__ = ("data",)__slot__ 을 override 해서 인스턴스 변수를 리스트나 튜플로 미리 지정하면 메모리 낭비를 줄이고 속도를 향상 시킬수 있다. 실제로 __slots__ 을 지정하였을 때와 안했을 때 인스턴스의 사이즈가 다르다. - __dict__ 가 없기 때문에 인스턴스는 __slots__ 에 명시되지 않은 새로운 변수를 할당할 수 없다. - 만약 새로운 변수를 동적으로 할당해야 하는 상황이라면 _..
- Total
- Today
- Yesterday
- GIT
- 장고
- 장고 카톡 자동응답
- 플러스친구 자동응답
- 면접답변
- 문서 비교
- 파이썬 입문
- virtualenv
- 엑셀 비교
- gitlab
- chatbot
- 이미지 비교
- 파이썬 강좌
- wsgi
- django chatbot
- 장고 플러스친구 자동응답
- gitignore
- pycrypto
- django
- 파이썬 프로그래밍
- Tistory
- admin.py
- 파이썬
- 모바일 테마 적용
- 문과 코딩
- 파이썬 독학
- PuTTYGen
- 면접정답
- Python
- 모바일 스킨 적용
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |