
Javascript Spread (확장, 전개) 문법
Javascript 의 Spread 문법은 배열과 객체를 학장(전개) 하는데 사용되는 문법이다. Spread 문법은 세 개의 점(' ... ') 을 사용해 배열과 객체를 풀어서 그 안에 있는 개별 항목들을 다른 배열이나 객체에 복사하거나 합칠 수 있다.
Spread 문법은 기존 배열아니 객체를 변경하지 않고 새로운 배열이나 객체를 생성하는데 사용된다. 이 불변성(immutability) 을 이용해 배열이나 객체의 병합 및 복사에 매우 유용한 기능이다.
다음은 배열(array) 데이터의 Javascript 와 Python 의 코딩 사례다.
```Javascript
예1)
const arrary1 = [ 1, 2, 3 ]
function sum(x, y, z) {
return x + y + z;
}
sum(...array1) -결과> ' 6 '
예2)
const array2 = [ 'hello', ...array1 ]
console.log(array2)
-결과> [ 'hello', 1, 2, 3 ]
Python 의 동일한 기능으로 별 기호 한 개를 사용 ' * ' 한다.
```Python
예1)
array1 = [ 1, 2, 3 ]
def sum(x, y, z):
return x + y + z
sum(*array1) -결과> ' 6 '
예2)
array2 = [ 'hello', *array1 ]
print(array2)
-결과> [ 'hello', 1, 2, 3 ]
다음은 객체(object) 의 Javascript 와 Python 의 코딩 사례다.
```Javascript
const obj1 = { x: 1, y: 2 };
const obj2 = { ...obj1, z: 3 };
console.log(obj2);
-출력> { x: 1, y: 2, z: 3 }
Python 의 동일한 기능으로 별 기호 두 개를 사용 ' ** ' 한다.
```Python
obj1 = { x:1, y:2}
obj2 = { **obj1, 'z': 3 }
print(obj2)
-결과> {'x': 1, 'y': 2, 'z': 3}

Python Iterator (순회, 반복) 객체
Python 의 Iterator 는 순회 가능한 객체의 항목에 순차적으로 접근해 값을 차례로 꺼내주는 객체이다. 이터레이터는 `__iter__()` 와 `__next__()` 라는 두 개의 특수한 메서드를 구현한 것이다.
대표적인 순회 가능한 객체에는 list, dict, set, str, bytes, tuple 및 range 가 있다. 이 이터러블한 객체들은 내부적으로 이터레이터를 가지고 있기 때문에 `for` 루프를 사용해 간단하게 순회할 수 있다.
`__iter__()` 메서드 : 이 메서드로 구현된 객체는 `iter()` 함수로 호출할 수 있다.
`__next__()` 메서드 : 이 메서드로 구현된 객체는 `next()` 함수로 호출할 수 있다. 더 이상 반환할 항목이 없는 경우 `StopIteration` 예외를 발생시킨다.
```Python Scripts
>>> numbers = [1,2,5]
>>> iter_number = iter(numbers)
>>> next(iter_number) -결과> `1`
>>> next(iter_number) -결과> `2`
>>> next(iter_number) -결과> `5`
>>> next(iter_number) -결과> `StopIteration`

Generator (순회 생성) 함수
파이썬에서는 `yield`를 사용한 값 반환(return) 으로 쉽게 사용자의 제너레이터 함수를 만들 수 있다.
파이썬에서는 `generator` 함수를 사용해서 쉽게 이터레이터를 만들 수 있다. 제너레이터 함수는 `return` 대신 `yield` 를 사용해 값을 반환한다.
def simple_generator():
yield 1
yield 2
yield 3
gen = simple_generator()
next(get) -result> 1
next(get) -result> 2
next(get) -result> 3
** python 에서 iterable 하지 않은 (순회 못하는; uniterable) 객체는?
숫자나 불린(Boolean) 값은 순회성이 없다.
>>> iter(33)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'int' object is not iterable
>>> iter(True)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'bool' object is not iterable
스트링은 순회성이 있다.
>>> str_iter = iter("hello")
>>> next(str_iter)
'h'
>>> next(str_iter)
'e'
>>> next(str_iter)
'l''코딩' 카테고리의 다른 글
| 웹브라우저라는 코딩로봇을 이용한 코딩 (1) | 2023.07.23 |
|---|---|
| 프로토콜을 구현하다 (0) | 2023.07.22 |
| 코딩 언어의 문법 (0) | 2023.07.20 |
| CSS 로 SVG 애니메이션 만들기(2) (1) | 2023.07.08 |
| CSS 로 SVG 애니메이션 만들기(1) (0) | 2023.07.08 |