교체기, 생성기, 귀속

2391 단어

교체기 및 생성기


교체 가능 객체

__iter__ 방법이 있는 대상은 바로 교체 가능한 대상이다.교체 가능한 대상이 되돌아오는 값은 __next__ 방법을 가진 대상을 교체기 대상이라고 한다
In [2]: a = [1,2]

In [3]: it = a.__iter__()

In [4]: it
Out[4]: 

In [5]: it.__next__()
Out[5]: 1

교체 대상은str,list,tuple,dict,set,file
               ,  `__next__`  
In [5]: it.__next__()
Out[5]: 1

In [6]: it
Out[6]: 

In [7]: for i in it:
   ...:     print(i)
   ...:
2

In [8]: it2 = it.__iter__()

In [9]: it2
Out[9]: 

삼원식

In [11]: print(1) if 1<2 else print(2)
1

목록 유도식

In [15]: b = (i for i in range(8))

In [16]: b
Out[16]:  at 0x000001E69BE82CA8>
In [20]: lst = list(b)

In [21]: lst
Out[21]: [0, 1, 2, 3, 4, 5, 6, 7]

사전 생성식

In [23]: keys = ["a", "b", "c"]

In [24]: values = (1,2,3)

In [25]: d = dict(zip(keys, values))

In [26]: d
Out[26]: {'a': 1, 'b': 2, 'c': 3}

In [27]: z = zip(keys, values)

In [28]: z
Out[28]: 

In [29]: z.__iter__()
Out[29]: 

In [30]: z.__next__()
Out[30]: ('a', 1)

생성기


키워드


함수에 yield 키워드가 나타나면 함수는 실행을 멈추고 값을 되돌려줍니다
In [31]: def func():
    ...:     yield 1
    ...:     yield 2
    ...:

In [32]: a = func()

In [33]: a
Out[33]: 

In [34]: a.__iter__()
Out[34]: 

In [35]: a.__next__()
Out[35]: 1

생성기는 특수한 교체기로서 생성기는 자동으로'교체기 프로토콜'(즉 iter 와next 방법)을 실현하고 두 가지 방법을 수동으로 실현할 필요가 없다.

귀속


특수한 플러그인 호출은 함수를 호출하는 과정에서 직접 또는 간접적으로 자신을 호출하는 것을 말한다.
귀속 만족의 특징:
  • 문제의 규모는 귀속에 따라 감소
  • 귀속 함수는 출구가 있어야 한다
  • 
    In [36]: lis = [1, [2, [3, [4, [5, [6, ]]]]]]
        ...: 
        ...: 
        ...: def tell(lis):
        ...:     for i in lis:
        ...:         if type(i) is list:
        ...:             tell(i)
        ...:         else:
        ...:             print(i)
        ...:
    
    In [37]: tell(lis)
    1
    2
    3
    4
    5
    6

    좋은 웹페이지 즐겨찾기