len () 및 sum ()을 파이썬에서 변수로 저장하는 규칙

핀 사람

파이썬 len()또는 값을 저장하는시기와 방법에 대한 규칙이 sum()있습니까? 예를 들어, 클래스가있는 경우

class MyClass:

    def __init__(self, single_number = 4, multiple_numbers = [1,2,3]):
        self.single= single_number 
        self.multiple = multiple_numbers

    def info(self):
        print(f"The length of multiple is {len(self.multiple)}")
        print(f"The length of multiple is {len(self.multiple)*4}")
        print(f"The length of multiple is longer than {len(self.multiple)-1}")

if __name__ == "__main__":
    test=MyClass()
    test.info()
    # other stuff
    test.info()

어느 시점에서 len(self.multiple)자신의 가치로 저장하기 시작 하시겠습니까? 고맙게도 파이썬은 len같은 일부 작업 사용 for my_numbers in multiple_numbers:하지 않으므로 반복에만 필요하지 않습니다. 또한의 값은 len클래스 인스턴스에 대해 정적이며 런타임 내의 다른 부분에서 여러 번 필요하므로 여기와 같은 임시 변수가 아닙니다 . 일반적으로 이것은 (매우 적은 양의) 메모리와 계산 사이의 트레이드 오프로 보입니다. 동일한 문제가 sum().

이 질문의 일부는 의견 기반이며 이에 대해 어떻게 생각하는지 듣게되어 기쁩니다.하지만 저는 주로 이에 대한 관례를 찾고 있습니다.

  1. 어떤 시점에서 len(self.multiple)자신의 값으로 저장 해야 합니까?
  2. 이름에 대한 규칙이 있습니까? length_of_multiple_numbers부풀어 보이지만 설명 적입니다.
JL 페이 렛

매번 계산 비용이 많이 들지 않는 한 스토리지를 정당화 할 것이 많다고 확신하지 않습니다. hpaulj의 답변을 참조하십시오.

그러나 정말로 원한다면 속성을 사용하고 캐시 할 수도 있습니다.

class MyList(list):

   @property
   def len_(self):
      return len(self)  #it's a list
or

   _len_ = None

   @property 
   def len_(self):
      if self._len_ is None:
          self._len_ = len(self)
      return self._len_

    def append(self, value):
       self._len_ = None
       super(MyList, self).append(value)

    ...and all other len-modifying methods also need to clear the cache.

다시 말하지만, 캐시하는 경우 결과가 변경 될 때마다 캐시를 ​​재설정해야합니다. 이는 또한 인스턴스 변수에 저장하려는 아이디어의 약점입니다. 오래된 데이터가 없는지 확인하기위한 추가적인 복잡성은 이것이 실제로 성능 병목 현상이라고 프로파일 링 한 후에 만 ​​허용되어야합니다.

(이 문제는 귀하의 예에서 btw에 대한 변경 가능한 기본 인수사용하여 도움이되지 않습니다 multiple_numbers). 일반적으로이를 확장하려면-합계 / 렌즈가 변경 가능한 항목의 상태에 의존하는 경우 계산을 저장 / 캐싱하는 것이 더 나쁜 생각입니다. 즉, MyList가 자체적으로 집계해야하는 len / sum이있는 객체를 참조하는 경우 MyList는 캐싱 / 저장에 관계없이 비즈니스가 없습니다.

명명 측면에서, 나는 아마도 내장 / 기존 이름을 섀도 잉하는 것을 피하기 위해 세미-컨벤션 명명을 할 것입니다 _. : cls-> cls_, list-> list_.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

파이썬에서 stdout의 첫 줄을 변수로 저장하는 방법

분류에서Dev

파이썬에서 열 값을 변수로 저장하는 부울 인덱싱

분류에서Dev

알림을위한 저장 프로 시저 및 함수 생성 규칙

분류에서Dev

규칙을 줄이는 대신 Bison 파서 확장 규칙

분류에서Dev

파이썬은 float를 정수로 변환하기 위해 어떤 반올림 규칙을 사용합니까?

분류에서Dev

사이트 코어 규칙에서 규칙 및 작업을 사용하는 방법

분류에서Dev

루프에서 목록의 len ()을 변수에 저장

분류에서Dev

chainer에서 chainer.GradientMethod를 사용하는 방법 및 매개 변수 업데이트 규칙을 사용자 정의하는 방법

분류에서Dev

콜백을 사용하여 규칙 node.js 함수를 생성기 및 수율로 변환

분류에서Dev

데이터가 R에서 규칙적으로 간격을두고 있는지 감지 및 테스트

분류에서Dev

T & 및 T const &에 대한 부분 순서 규칙을 이해하는 방법

분류에서Dev

UpdateAttributes 프로세서에서 규칙 및 조건을 사용하는 방법은 무엇입니까?

분류에서Dev

Postfix 문제 : iptables 규칙 및 외부에서 이메일을받을 수 없음

분류에서Dev

테이블 이름 및 값을 매개 변수로 사용하는 저장 프로 시저

분류에서Dev

필터링 및 정렬 규칙을 모두 준수하는 이미지를 Excel에 추가

분류에서Dev

Alpine Linux에서 iproute2 경로 및 규칙을 유지하는 방법은 무엇입니까?

분류에서Dev

일괄 컴파일로 가변 개수의 대상을 업데이트하는 메이크 파일 규칙

분류에서Dev

체크 스타일 규칙을 준수하는 toString 및 hashCode 메서드를 생성하는 방법

분류에서Dev

Antlr에서 특정 규칙을 필수로 만드는 방법

분류에서Dev

typescript eslint에서 파일 이름 및 폴더 이름 규칙을 어떻게 적용 할 수 있습니까?

분류에서Dev

하나의 전역 규칙으로 htaccess에서 수동 규칙을 어떻게 적용 할 수 있습니까?

분류에서Dev

Typescript의 appconstants에 유효성 검사 규칙을 저장하는 방법

분류에서Dev

파이썬에서 순차적으로 파일 이름을 변경하여 변수를 저장하는 효율적인 방법이 있습니까?

분류에서Dev

Makefile에서 빌드 규칙을 수정하는 방법

분류에서Dev

bash는 특수 변수에 대해 서로 다른 약한 인용 규칙을 가지고 있습니까?

분류에서Dev

bash는 특수 변수에 대해 서로 다른 약한 인용 규칙을 가지고 있습니까?

분류에서Dev

파이썬에서 cramer의 규칙을 사용하여 역을 계산하는 방법은 무엇입니까?

분류에서Dev

Clipspy에서 팩트 값을 가져 와서 파이썬 변수에 저장하는 방법

분류에서Dev

규칙 저장소 별 위젯을 사용하여 SonarQube 디스플레이 문제를 심각도별로 만들 수있는 방법은 무엇입니까?

Related 관련 기사

  1. 1

    파이썬에서 stdout의 첫 줄을 변수로 저장하는 방법

  2. 2

    파이썬에서 열 값을 변수로 저장하는 부울 인덱싱

  3. 3

    알림을위한 저장 프로 시저 및 함수 생성 규칙

  4. 4

    규칙을 줄이는 대신 Bison 파서 확장 규칙

  5. 5

    파이썬은 float를 정수로 변환하기 위해 어떤 반올림 규칙을 사용합니까?

  6. 6

    사이트 코어 규칙에서 규칙 및 작업을 사용하는 방법

  7. 7

    루프에서 목록의 len ()을 변수에 저장

  8. 8

    chainer에서 chainer.GradientMethod를 사용하는 방법 및 매개 변수 업데이트 규칙을 사용자 정의하는 방법

  9. 9

    콜백을 사용하여 규칙 node.js 함수를 생성기 및 수율로 변환

  10. 10

    데이터가 R에서 규칙적으로 간격을두고 있는지 감지 및 테스트

  11. 11

    T & 및 T const &에 대한 부분 순서 규칙을 이해하는 방법

  12. 12

    UpdateAttributes 프로세서에서 규칙 및 조건을 사용하는 방법은 무엇입니까?

  13. 13

    Postfix 문제 : iptables 규칙 및 외부에서 이메일을받을 수 없음

  14. 14

    테이블 이름 및 값을 매개 변수로 사용하는 저장 프로 시저

  15. 15

    필터링 및 정렬 규칙을 모두 준수하는 이미지를 Excel에 추가

  16. 16

    Alpine Linux에서 iproute2 경로 및 규칙을 유지하는 방법은 무엇입니까?

  17. 17

    일괄 컴파일로 가변 개수의 대상을 업데이트하는 메이크 파일 규칙

  18. 18

    체크 스타일 규칙을 준수하는 toString 및 hashCode 메서드를 생성하는 방법

  19. 19

    Antlr에서 특정 규칙을 필수로 만드는 방법

  20. 20

    typescript eslint에서 파일 이름 및 폴더 이름 규칙을 어떻게 적용 할 수 있습니까?

  21. 21

    하나의 전역 규칙으로 htaccess에서 수동 규칙을 어떻게 적용 할 수 있습니까?

  22. 22

    Typescript의 appconstants에 유효성 검사 규칙을 저장하는 방법

  23. 23

    파이썬에서 순차적으로 파일 이름을 변경하여 변수를 저장하는 효율적인 방법이 있습니까?

  24. 24

    Makefile에서 빌드 규칙을 수정하는 방법

  25. 25

    bash는 특수 변수에 대해 서로 다른 약한 인용 규칙을 가지고 있습니까?

  26. 26

    bash는 특수 변수에 대해 서로 다른 약한 인용 규칙을 가지고 있습니까?

  27. 27

    파이썬에서 cramer의 규칙을 사용하여 역을 계산하는 방법은 무엇입니까?

  28. 28

    Clipspy에서 팩트 값을 가져 와서 파이썬 변수에 저장하는 방법

  29. 29

    규칙 저장소 별 위젯을 사용하여 SonarQube 디스플레이 문제를 심각도별로 만들 수있는 방법은 무엇입니까?

뜨겁다태그

보관