언어
-
[Python] 접근 제어자언어/파이썬 & 장고 2016. 10. 7. 14:04
다른언어와 달리 private, public 등의 접근제어자 키워드가 존재하지 않고 작명법(naming)으로 접근제어를 합니다. public, private, protected에 대한 규칙은 다음과 같습니다.publicprivateprotected아무 밑줄이 접두사에 없어야 함ex) num두개의 밑줄 __이 접두사여야 함ex) __num한 개의 밑줄 _이 접두사여야 함ex) _num 접미사는 밑줄이 한 개까지만 허용ex) __num_ 접미사의 밑줄이 두 개 이상이면 public으로 간주ex) __num__ 예제# -*- coding: utf-8 -*- class HasPrivate: def __init__(self): self.public = "PUBLIC" self.__private = "PRIVATE..
-
[Python] 클래스언어/파이썬 & 장고 2016. 10. 7. 13:50
__init__() 메소드를 사용한 초기화클래스의 생성자가 호출되면 가장 먼저 __new__() 메소드가 호출됩니다. 이 메소드는 클래스의 인스턴스를 만듭니다. 이 메소드가 호출된 다음 __init__()메소드를 호출하게 됩니다.보통 변수 선언은 __init__()에서 담당하지만 클래스에 직접 정의하면 다음과 같은 현상이 벌어집니다.class ClassV: # test는 ClassV 클래스의 정의시점에 함께 메모리에 할당됩니다. test = '' ob = ClassV() # ob 객체가 생성되기 전에 이미 test는 메모리에 적재된 상태입니다.test처럼 클래스와 같은 시간/장소에 정의되는 데이터 속성을 '클래스 속성'이라 하고 인스턴스와 같은 시간/장소에 정의되는 데이터 속성은 '인스턴스 속성'이라 합..
-
[Python] 패키지언어/파이썬 & 장고 2016. 10. 7. 11:52
평범한 디렉토리가 파이썬 패키지로 인정받으려면 __init__.py 파일이 해당 경로에 존재해야 합니다. __init__.py보통 __init__.py 파일은 비워져 있는 것이 보통입니다. 해당 파일에 손대는 경우는 __all__이라는 변수를 조정할 때 정도입니다. __all__은 다음과 같은 코드를 실행할 때 패키지로부터 반입할 모듈의 목록을 정의하기 위해 사용됩니다.from 패키지 import *다음은 테스트할 파일 경로입니다.main.pyfolder\ ---- __init__.py ---- temp1.py ---- temp2.py ---- temp3.py# temp1.py, temp2.py, temp3.py def test(): print('module name: {0}'.format(__name_..
-
[Python] 모듈언어/파이썬 & 장고 2016. 10. 7. 11:38
모듈은 '독자적인 기능을 갖는 구성 요소'를 의미합니다. 모듈은 표준 모듈, 사용자 생성 모듈, 서드 파티 모듈로 나뉩니다. 표준 모듈은 파이썬에서 기본으로 제공해주는 모듈, 사용자 생성 모듈은 사용자가 생성한 모듈입니다. 서드 파티 모듈는 pypi에서 pip 명령어를 통해 받는 파일입니다. 보통 모듈의 선언 순서는 표준모듈 - 서드 파티 모듈 - 사용자 생성 모듈 이고 알파벳 순서로 선언하는 것이 베스트입니다. 모듈을 import 하는 방법은 2가지가 있습니다.import 모듈 # 모듈의 실제 파일명 from 모듈 import 변수 또는 함수 다음은 calculater.py라는 모듈을 불러오는 두 가지 스타일의 코드로 예시입니다.importimport calculator calculator.plus(1..
-
[Python] 중첩함수언어/파이썬 & 장고 2016. 10. 7. 10:55
파이썬은 함수 안에 함수를 정의하는 것이 가능합니다. 중첩함수는 자신이 소속된 함수의 매개변수에 접근할 수 있다는 특징이 있습니다.아래 예제는 stddev()는 표준편차를 구하는 함수인데 mean()과 variance()를 중첩 함수로 가지고 있습니다. import math def stddev(*args): def mean(): return sum(args) / len(args) def variance(m): total = 0 for arg in args: total += (arg - m) ** 2 return total / (len(args) - 1) v = variance(mean()) return math.sqrt(v) a = stddev(1.3, 1.5, 2.6, 5.4) print(a)# 1.8..
-
[Python] 함수를 변수에 담아 사용하기언어/파이썬 & 장고 2016. 10. 7. 10:46
def other_method(a): print(a) val = other_method val(123) # 123함수를 변수에 담아서 사용이 가능하기 때문에 list나 dict 타입에도 넣어서 사용이 가능합니다.def plus(a, b): return a + b def minus(a, b): return a - b list = [plus, minus] a = list[0](1, 2) b = list[1](1, 2) print(a, b) # 3, -1 파이썬은 함수를 일급 객체로 다루기 때문에 이러한 일이 가능합니다. 일급 객체는 프로그래밍 설계에서 매개변수로 넘길 수 있고 함수가 반환할 수 있으며 변수에 할당이 가능한 객체를 가리키는 용어입니다. 함수를 다른 함수의 매개변수로 사용할 수 있습니다.def ..
-
[Python] 리스트 메소드언어/파이썬 & 장고 2016. 10. 7. 10:01
append()리스트의 끝에 입력받은 값을 추가a=[1,2,3] a.append(4) print(a) # [1,2,3,4]extend()기존리스트에 다른 리스트를 이어 붙임 + 연산자와 같은 기능a=[1,2,3] a.extend([4,5,6]) print(a) # [1,2,3,4,5,6]insert()리스트의 끝에 입력받은 값을 추가a=[2,3,4] a.insert(0,1) # 0번째에 1을 추가 print(a) # [1,2,3,4]remove()입력받은 값을 리스트에서 찾아 삭제a=[1,2,3] a.remove(3) print(a) # [1,2]pop()파라미터를 입력하지 않으면 리스트의 가장 마지막 데이터를 삭제.지우고자하는 인덱스를 입력하면 해당 요소 삭제a=[1,2,3,4,5] a.pop() pr..
-
[Python] 문자열 메소드언어/파이썬 & 장고 2016. 10. 7. 09:44
startswith()원본 문자열이 매개변수로 입력한 문자열로 시작하는지 판단결과는 boolean으로 리턴a='hello' a.startswith('he') # True a='hello' a.startswith('lo') # Falseendswith()원본 문자열이 매개변수로 입력한 문자열로 끝나는지 판단결과는 boolean으로 리턴a='hello' a.startswith('he') # False a='hello' a.startswith('lo') # Truefind()문자열 내에 입력된 문자열이 어느 위치에 존재하는지 앞에서부터 찾습니다.만약 존재하지 않으면 -1을 리턴합니다.a='hello' b=a.find('ll') print(b) # 2 b=a.find('h') print(b) # 0rfind()..
-
[Python] dict 타입끼리 더하기언어/파이썬 & 장고 2016. 10. 5. 18:03
a = {'a':1,'b':2,'c':3} b= {'d':4,'e':5,'c':4444} # 1. 덧셈 z=a+b print(z) # dict끼리는 +를 지원하지 않아 에러 # 2. z = {**a, **b} # python 3.5부터 지원 이하버젼 x # 3. z = a.copy() z.update(b) # dict끼리 덧셈이 가능하고 동일한 키가 존재하면 키들 간에 가장 큰 값으로 대체됨 # 3.1 응용편 def merge(*dict_args): print(dict_args) result = {} for dictionary in dict_args: result.update(dictionary) return result a = {'a':1,'b':2,'c':3} b= {'d':4,'e':5,'c':44..
-
[Django] ORM JOIN언어/파이썬 & 장고 2016. 10. 5. 13:50
django에서 orm을 사용해 join을 하는 방법은 여러가지가 존재합니다. orm에서 제공하는 함수를 사용하기 위해선 먼저 테이블간 foreign key가 잡혀있어야만 가능합니다. 지금부터 foreign key를 논리적으로 잡는 방법 및 foreign key가 잡혀있을 때의 join과 foreign key가 존재하지 않을 때 join하는 방법을 소개하겠습니다.1. test case (sql)CREATE TABLE public."group" ( id integer NOT NULL DEFAULT nextval('group_id_seq'::regclass), name text NOT NULL, age smallint, num integer, CONSTRAINT group_pkey PRIMARY KEY (i..