반응형

파이썬(Python)/문법 61

파이썬 *args, **kwargs 의미와 예제를 통해 이해하기

파이썬 *args, **kwargs 의미와 예제를 통해 이해하기 예제 코드>> def a_func(*args, **kwargs): print(args) print("###########") for key, value in kwargs.items(): print(key) print(value) print("1번 예제") a_func(name='kc') print("") print("2번 예제") a_func("hi", name='kc') print("") print("3번 예제") a_func("hi", {"myname",'kc'}) print("") print("4번 예제") a_func(1,2,3) print("") 코드 결과>> 1번 예제 () ########### name kc 2번 예제 ('hi'..

파이썬에서 @(골뱅이, 데코레이터라고 불림)이란? 사용방법과 예제

파이썬 @ (Decorator) 사용예제와 방법 #골뱅이 마크 사용 예시 @wraps(f) @app.route @login_required @templated() Python flask를 사용하다 보면 위 코드와 같이 Decorator로 이루어진 구문이 있는데 동작 방식은 알지만 실제 "at" 기호가 앞에 붙을때 어떻게 움직이는지는 잘 몰라 조사하게 되었다. def a_func(b_func): print("a_func") def c_func(): print("b_func") b_func() return c_func @a_func def d_func(): print("d_func") print("############") d_func() >>결과 a_func ############ b_func d_func..

파이썬 함수 안에 중첩(nested)해서 함수 넣기

함수 안에 함수 중첩해서 넣기 예제와 특징 예제1 코드>> def a_func(): def b_func(): print("it's b_func") print("it's a_func") b_func() a_func() # b_func() #주석처리 결과>> it's a_func it's b_func 예제1 코드 주석>> 위 코드 예제는 a_func 함수 안에 b_func 함수를 넣어서 실행하고 있다. a_func()에 의해 함수가 실행되었다고 생각하자. 그러면 해당함수는 컴퓨터 메모리의 스택(Stack)이라는 공간에 저장되어 실행 된다. 스택의 a_func 함수 시작점 주소부터 코드가 진행되는데 그 내부에서 b_func 함수도 선언된다. 그리고 print("it's a_func") 가 실행되고 b_func..

파이썬(Python) 속성 중 __name__ 이란?

__name__ 이란? 파이썬 코드 예제를 살펴 보면 아래와 같은 코드를 종종 볼수 있다. if __name__ == '__main__': 간단히 설명하면 __name__은 파이썬에 들어가 있는 기본 속성으로 해당 모듈의 위치를 알려 준다. 참고로 파이썬의 기본 속성은 아래와 같이 확인할 수 있다. print(dir()) # 결과 ['__annotations__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__'] name은 실행이 발생하는 위치인데 아래 예제를 통해 이해해보겠다. __name__ 예제 print(__name__) 위 코드처럼 test1.py 파일에 ..

JSON 개념, 의미, 사용 목적, Python Flask 와의 연동 예제 설명

JSON 의 의미와 사용 목적 JavaScript Object Notation (JSON) 는 텍스트 형식으로 구조화된 형태로 자바스크립트 구문을 사용한다. JSON은 데이터를 웹 application에 전송할때 주로 사용된다. 가령 데이터를 서버에서 클라이언트의 웹브라우저로 보내거나 반대로 웹에서 서버로 보낼 때 사용된다. JSON 이 비록 자바스크립트의 형태를 따르기는 하지만 자바스크립에서 독립적으로 사용될 수 있고 많은 프로그램 환경에서도 JSON 기능을 제공한다. 현재 내가 개발하고 있는 환경은 파이썬 Flask를 이용해서 웹서버를 만들고 웹서버에서 주기적으로 웹브라우저에 데이터를 보내주는 예제이다. 만일 JSON을 사용하지 않고 데이터를 보내려고 한다면 python에서 별도의 encoding 과..

list copy [:] 리스트안에 콜롬(:) 사용하는 이유

코드>> a_var = [0,1,2,3] b_var = a_var c_var = a_var.copy() d_var = a_var[:] print(type(a_var)) print(a_var) print(b_var) print(c_var) print(d_var) print(id(a_var)) print(id(b_var)) print(id(c_var)) print(id(d_var)) 결과>> [0, 1, 2, 3] [0, 1, 2, 3] [0, 1, 2, 3] [0, 1, 2, 3] 3000420137536 3000420137536 3000421627328 3000421627136 주석>> 파이썬은 객체 언어이다. int 값을 정하는 것도 모두 객체이다. 위 코드는 리스트 값을 복사하는 여러 방법을 표현했다..

파이썬 함수안에 함수, 중첩함수

가끔 함수안에 함수를 쓰는 경우가 있는데 하나의 함수로 코드를 끝내고 싶을 때 쓰긴하지만 비효율 적이라 보통은 class를 사용한다. 함수안에 함수를 사용하게 되면 가장 바깥에서 선언된 변수는 함수 내에서는 전역변수 처럼 동작하고 함수 안의 함수에서 선언된 변수는 지역변수 처럼 동작한다. 아래 코드를 통해 이해해보자. 코드>> def f_out0(a_var): b_var = a_var print(id(a_var)) print(id(b_var)) print(b_var) print("#######") def f_in0(): b_var = "hi" print(id("hi")) print(id(b_var)) print(b_var) print("#######") def f_in1(): print(id(a_var)..

파이썬 zip함수, 별표(*)

코드 >> a_var = [0,1,2,3,4] b_var = [0,1,2,3] c_var = [2,4,6,8] print(zip(a_var,b_var,c_var)) print(list(zip(a_var,b_var,c_var))) print(*list(zip(a_var,b_var,c_var))) 결과 >> [(0, 0, 2), (1, 1, 4), (2, 2, 6), (3, 3, 8)] (0, 0, 2) (1, 1, 4) (2, 2, 6) (3, 3, 8) 주석 >> zip 함수는 iterable 의 반복 가능한 자료형을 입력으로 받는다. 입력받은 인자 값의 갯수 중 최소 갯수를 받아서 묶어서 튜플로 보내 준다. 위의 예제에서는 b_var, c_var의 갯수가 4개로 가장 작으므로 4개의 튜플이 생긴다. 첫..

파이썬 functools reduce 사용법

간단히 코드를 통해 이해 해보자. 코드>> import functools a_var = [1,2,3,4,5,6,7] print(functools.reduce(lambda x, y: 10 * x + y, a_var, 0)) 결과>> 1234567 주석>> 위 코드는 리스트에 숫자를 꺼내서 정수형태로 합치는 코드이다. 우선 functools의 reduce 함수는 인자를 하나씩 꺼내어 표현식에 누적해서 넣는 방식이다. 함수 설명 부분을 visual studio에서 가져왔다. def reduce(function, sequence, initial=None) reduce(function, sequence[, initial]) -> value Apply a function of two arguments cumulat..

파이썬 deque 사용하는 이유 / popleft

파이썬 deque는 list와 dictionary와 거의 동일하게 생각하면 된다. 차이는 popleft의 시간 차이다. list의 경우 pop()으로 마지막 값을 꺼내는 경우 O(1) (일정한 시간) 시간이 걸리는데, pop(0)으로 가장 앞단에 값을 꺼낼때는 list 크기에 따라 읽어 오는 시간이 달라진다. O(n) 시간이 걸린다. 하지만 deque를 사용할 경우 popleft()를 사용하면 리스트의 pop(0)과 같은 기능을 주면서 걸리는 시간은 O(1)이 걸린다. pop을 사용하는 경우 말고 index로 값을 읽어 오는 경우는 리스트나 deque 모두 O(1)로 일정한 시간만 걸린다. 즉, index의 주소 값으로 바로 값을 찾는 것이다. 아래 코드는 각 상황에 따라 시간을 측정한 값이다. 0.00..

반응형