Python
알고리즘 문제를 풀면서 파이썬에 익숙해지긴 했지만, 언어 자체를 공부하는것과는 다른것 같아 파이썬 공부를 시작했다.
- iterable한 객체란 순서가 있는 객체가 아니라 하나씩 뽑아 쓸 수 있는 객체. 튜플, 세트, 딕셔너리, 문자열, range, 리스트
- 함수의 인자로 함수를 넣을 수 있고, 이 경우 함수는 일반 데이터 처럼 쓰인다. 괄호()가 있으면 함수를 실행한다는 의미고 괄호가 없으면 다른 일반 객체와 같다.
- global : 전역변수 / nonlocal : 지역변수
- global로 함수 내에서 객체를 선언하면 전역변수처럼 사용할 수 있고
- nonlocal로 함수 내에서 변수를 선언하면 해당 함수의 바로 바깥에서도 사용이 가능하다. 이 때 바깥에 같은 이름으로 변수를 미리 선언했어야 한다. 값을 재할당하는 것이다.
def A():
x = 50
print('[0]', x)
global global_a
global_a = 445
def B():
nonlocal x
x = 20
print('[1]', x)
B()
print('[2]', x)
A()
print(global_a)
print('[3]', x)
[0] 50
[1] 20
[2] 20
445
Traceback (most recent call last):
File "/Users/jongyounlee/developer/python/ch5/5-0.py", line 17, in <module>
print('[3]', x)
NameError: name 'x' is not defined
- global로 선언한 global_a는 제대로 출력
- nonlocal의 영향력이 [3] x에는 미치지 않기 때문에 오류 발생
- [2]는 nonlocal로 재할당됐기 때문에 20으로 출력
Algorithm
Network
- 네트워크란 컴퓨터와 컴퓨터가 데이터통신에 의해 그물망처럼 연결돼 리소스를 운반하는 것
- 회선교환방식이 아닌 패킷 교환 방식을 사용하고 있고, 패킷이란 데이터를 작은 단위로 잘게 쪼갠 것. 용량이 작은 패킷을 사용하기 때문에 사용자들끼리 회선을 공유할 수 있고 공유 속도도 빨라진다. 이 때 패킷을 회선으로 송출하고, 일시적으로 저장하는 역할을 하는 것이 패킷 교환기인데 이를 라우터라고 부름.
- LAN은 WAN보다 비교적 규모가 작은 네트워크로, 사유지 내에서 책임자가 구축하는 것. 더 작은 단위의 lan이 모여서 lan을 구성한다. 큰 lan단위 끼리 연결해 주는 것이 wan. 세계적 규모의 wan을 인터넷이라고 부른다.
글, 책