새벽을 밝히는 붉은 달
2021.03.04 오늘의 기록 본문
<Shell Script>
- if 문
if [ 조건 ]
then
참인 경우 실행
else
거짓인 경우 실행
fi
- 문자열 비교 연산자
"문자열1" = "문자열2" // 두 문자열이 같으면 참
"문자열1" != "문자열2" // 두 문자열이 같지 않으면 참
-n "문자열" // 문자열이 NULL이 아니면 참
-z "문자열" // 문자열이 NULL이면 참 - 산술 비교 연산자
수식1 -eq 수식2 // 두 수식(또는 변수)이 같으면 참
수식1 -ne 수식2 // 두 수식(또는 변수)이 같지 않으면 참
수식1 -gt 수식2 // 수식1이 크면 참
수식1 -ge 수식2 // 수식1이 크거나 같으면 참
수식1 -lt 수식2 // 수식1이 작으면 참
수식1 -le 수식2 // 수식1이 작거나 같으면 참
!수식 // 수식이 거짓이면 참 - 파일조건
-d 파일이름 // 파일이 디렉터리면 참
-e 파일이름 // 파일이 존재하면 참
-f 파일이름 // 파일이 일반 파일이면 참
-g 파일이름 // 파일에 set-group-id가 설정되면 참
-r 파일이름 // 파일이 읽기 가능이면 참
-s 파일이름 // 파일 크기가 0이 아니면 참
-u 파일이름 // 파일에 set-user-id가 설정되면 참
-w 파일이름 // 파일이 쓰기 가능 상태면 참
-x 파일이름 // 파일이 실행 가능 상태면 참 - case문을 쓸 때, 각 분기 조건의 마지막 구문의 맨 뒤에 세미콜론을 2개 붙여야 함
- AND 연산자: and / -a / && 사용
- OR 연산자: or / -o / || 사용
- 이때, -a나 -o는 테스트문([]) 안에서만 사용할 수 있음
<파이썬 알고리즘 인터뷰>
- 빅오: 점근적 실행 시간을 표기할 때 가장 널리 쓰이는 수학적 표기법 중 하나
- 분할 상환 분석(Amortized Analysis): 빅오와 함께 함수의 동작을 설명할 때 중요한 분석 방법 중 하나. 최악의 경우를 여러 번에 걸쳐 골고루 나눠주는 형태로 알고리즘의 시간 복잡도를 계산할 수 있음.
- 병렬화: 일부 알고리즘들은 병렬화로 실행 속도를 높일 수 있음.
- 파이썬은 버전 2까지는 int(고정 정밀도 정수형)와 long(임의 정밀도 정수형)으로 2가지의 숫자 정수형을 제공하였음.
- PEP 237을 통해 버전 2.4부터는 int가 충분하지 않으면 자동으로 long 타입으로 변경.
- 버전 3부터는 아예 int 단일형으로 통합되면서, 임의 정밀도 정수형을 지원. 고정 정밀도 정수형은 지원하지 않음.
- bool은 파이썬에서 내부적으로 1(True)과 0(False)로 처리되는 int의 서브 클래스임
- object > int > bool 의 구조
- 파이썬은 모든 것이 객체임 (c는 원시 타입, java는 원시 타입과 객체를 지원)
- c++과 파이썬과의 차이
// c++
int a = 10;
int &b = a;
b = 7;
std::cout << a << std::endl;
------------------------------------
7
#python
>>> a = 10
>>> b = a
>>> id(a), id(b)
(140707608778688, 140707608778688)
>>> b = 7
>>> a, id(a), id(b)
(10, 140707608778688, 140707608778552)
c++은 참조 변수에 값을 할당하면 참조의 대상 또한 할당된 값으로 변경되지만, 파이썬의 경우 b에 새로운 값을 할당하게 되면 더 이상 a 변수를 참조하지 않고, 새로운 객체를 참조하게 됨 -> a의 값은 그대로 유지되며, b는 다른 id로 변경됨 - 불변 객체는 값의 변경이 불가능 -> 참조 변수에서 값을 조작할 수 없음
- 가변 객체를 참조하고 있다면 참조 변수에서 값을 조작하는 경우 참조 대상의 변수도 변경 가능함. 다만, 이 경우에도 = 연산자로 재할당을 하게 되면 다른 ID가 됨
- 파이썬에서 비교 연산자 is 는 id() 값을 비교하는 함수임
- 파이썬에서 비교 연산자 ==는 값을 비교하는 연산자임
- 예)
>>> a = [1, 2, 3]
>>> a == a
True
>>> a == list(a)
True
>>> a is a
True
>>> a is list(a)
False - 파이썬의 객체 구조는 매우 편리하고 강력한 기능을 제공하나, c나 java에 비해 느린 이유가 됨
'Developer > Record' 카테고리의 다른 글
2021.03.08 오늘의 기록 (0) | 2021.03.09 |
---|---|
2021.03.06 오늘의 기록 (0) | 2021.03.07 |
2021.03.02 오늘의 기록 (0) | 2021.03.03 |
2021.02.14 오늘의 기록 (0) | 2021.02.14 |
2021.02.03 오늘의 기록 (0) | 2021.02.04 |
Comments