본문 바로가기
Networking/Network Automation

네트워크 엔지니어를 위한 프로그래밍 기초 - 8

by 포항돼지 2021. 5. 20.

list는 변경 작업이 가능하다.

Tuple 리스트와 동일한 성질을 가지고 있지만, "수정"이 불가하다

 

Tuples

- Sequence : Tuple의 아이템은 순서가 있다. 즉 ordered collection 이다.

- Heterogeneity : Tuple 의 아이템은 서로 다른 자료형이 와도 상관없다.

- Immutable : Tuple은 그 내용을 수정할 수 없다.

- Tuple의 항목item : Tuple의 각 항목item은 list, dictionary, tuple등이 올 수 있다.

 

튜플은 자료구조가 서로 달라도 상관이 없다.

변경이 되선 안되는 데이터들은 튜플로 저장해놓으면 됨

 

튜플을 만드는 방법. () 쓰기 'x' 쓰기 , 마지막에 쉼표 붙이기 마지막에 쉼표 빼면 스트링됨

 

Dictionary를 Tuple로

튜플안에 딕셔너리가 데이터로 들어가 있음. 메모리 낭비를 줄이기위해, 자료형 안에 또 다른 자료형을 넣어 놓은것. 상자 안에 다른 상자 넣은 개념(복잡하긴한대, 네트워크 자동화에 분명히 필요함,딕셔너리를 리스트로 정리하는 형태를 가장 자주씀)

 

튜플은 수정이 안되기때문에 주어져있는 튜플을 리스트로 바꿀수있음

메모리 어딘가에 있는 미리 define된 device_tuple을 우리는 수정할수 없다. 그저 그 정보를 가져와서 device_list 라는 리스트 변수에다가 가따 박아서 리스트로 만드는 것 뿐

 

튜플의 Unpacking(튜플의 값을 좀 분리해서 사용하고 싶을때 사용)

 

요롷게 튜플의 아이템의 갯수와 동일한 변수를 지정하면 str로 들어감

튜플의 장점은, 코더의 실수나 시스템으로 인해 값이 변하지 않기때문에 중요한 데이터들을 넣을때 사용. 위와 같이 변수를 지정한뒤 딕셔너리처럼 키로 사용 가능

 

 

NamedTuple (Tuple의 변형화된 자료구조)

수정이 안되는 dictionary라고 생각하면 편함

튜플임에도 불구하고 키에 의해서 값이 할당되는 구조

파이썬에 기본적으로 존재하는 자료구조가 아님

 

튜플은 index number로 제어가 되지만, NamedTuple은 Key값을 가지고 불러오고, mutable하게 할수있다

(자주 사용하는 것임, 변경이 되면 안되는 장비 정보를 넣고 그 값을 가지고 코딩할때)

 

Namedtuple은 이미 자료구조가 구성 되어있다.

 

위에 datas 파일을 읽어와서 strip.를가지고 (',')기준으로 split을 함.

 

각 1줄을 읽을때마다 저러한 자료 구조를 만들게 되는 것.

 

set 자료형은 중복을 허용하지 않음.

 

내 목록에 있는 장비들의 이 os_types이라는 변수에 추가를 하는 것.

 

Name, os_type등등 맞춤형 키값을 갖게됨

그리고 set 자료 구조로 os type을 따로 뺄수있음 , 값이 중복이 되지 않기때문에 들어가 있는 값만 출력 가능. 각각의 아이템이 한번씩만 출력