StoryCode

'2024/12/05'에 해당되는 글 2건

  1. static
  2. locals, return 될 변수를 동적으로 변경하는 방법

static

Python, 파이썬
반응형

1) Python 에는 그런 거 없다. 다른 방식으로 비슷하게 구현해야 한다.

 

2-1)

def func(static_var = [0]):

       static_var[0] +=1

        return static_var[0]

 

# func 를 의도한대로 사용한 결과

print(func()) # 1 출력

print(func()) # 2 출력

 

# func 를 의도에서 벗어나 사용한 결과 문제점

print(func()) # 1 출력

print(func([10, 20, 30])) # 11 출력

print(func()) # 2 출력

 

2-2) 2-1 의 문제점 해결한 방식. class member variable 방식

def func()

    func.counter += 1

    return func.counter

 

func.counter = 0

처럼 하면 func 객체 ( def 라 함수지만 python 에서 모두 객체이다. counter 는 member 변수가 되고, 객체가 사라지지 않는 이상 유지된다. Ex> del func.counter)

 

2-3) 2-1 의 문제점 해결한 방식. nonlocal 방식. in 에서 out의 변수 참조가 존재할 수 있어서 변수 유지해줌.

def out_func():
    static_var = 0
     def in_func():
          nonlocal static_var # static_var 는 in_func 에서만 변경할 수 있다.
          static_var 十= 1
          return static_var
     return in_func

 

out_func()

반응형

locals, return 될 변수를 동적으로 변경하는 방법

Python, 파이썬
반응형

# locals 에는 메소드의 변수가 저장되어 있음. 이를 이용해서 returns 가 요구하는 변수들만 뽑아서 리턴할 수 있다.

def forward(x, f, h, returns):

    xf = x + f
    fh = f + h
    xfh = xf * fh

    result = xfh

 

    variables = locals()

    return tuple(variables[r] for r in returns)

 

a, b = forward(1,2,3, returns=("xf", "fh")) # xf 와 fh 를 리턴해달라 요구

d, e, f = forward(1,2,3, returns=("xf", "fh", "result")) # xf 와 fh오f result 를 리턴해달라 요구

반응형

'Python, 파이썬' 카테고리의 다른 글

static  (0) 2024.12.05
Debuggin,디버깅,pdb  (0) 2024.05.24
import directory 지정해주기  (0) 2024.04.19
csv 를 읽어 mysql create table 문장 생성  (0) 2024.03.16
..., :, Ellipsis  (0) 2023.09.21