파이썬 변수 할당 개념, float(실수형) 계산 시 오류 발생 이유, 슬라이싱

최성락·2024년 3월 29일

Python

목록 보기
1/2

변수 할당이란?

먼저 변수를 할당한다는 것은 메모리 공간에 값을 저장하고, 해당 값을 참조하기 위해 변수에 이름을 부여하는 것을 의미한다. 즉, 변수에 값을 할당한다는 것은 그 변수에 값을 저장하는 것을 말한다.


*Python의 변수 할당 개념을 다른 언어와 비교해 설명해주세요

(1) 동적 타입 | 정적 타입

Python은 동적으로 타입을 지정하는 언어다. 그래서 변수를 선언할 때 해당 변수의 타입을 명시적으로 지정할 필요가 없다.

x = 10 // 변수 x에 10이라는 값을 할당

C언어는 정적으로 타입을 지정하는 언어다. 변수를 선언할 때 해당 변수의 타입을 명시적으로 선언해야 한다.

int = x ; // 변수 x를 정수형으로 선언
x = 10 ; // 변수 x에 10이라는 값을 할당

(2) 메모리 관리

Python은 '가비지 컬렉션' 이라는 메커니즘을 통해 메모리 관리를 자동으로 처리한다. 한마디로 변수를 사용하지 않을 때 해당 메모리를 자동으로 해제한다.

C언어는 메모리 할당과 해제를 직접 관리해야한다. 변수 선언시에도 메모리 공간이 할당되고, 변수가 필요하지 않을 때에도 직접 해제해주어야 한다.


*Python의 실수형(float) 계산 시 오차가 발생하는 이유에 대해 간단히 설명해 주세요

Python에서 실수형(float) 계산 시 오차가 발생하는 주된 이유는 이진 부동 소수점 표현 방식을 사용하기 때문이다. 이진 부동 소수점 표현 방식이란 컴퓨터가 실수를 근사적으로 표현하는 방식으로, 십진수로 표현되는 실수를 이진수로 표현 한다.
한마디로 무한한 소수를 유한한 비트 수로 표현하려고 하기 때문에 정확한 값을 표현할 수 없는 것이다.

실제로 코드를 작성해보면

0.1 + 0.2 = 0.30000000000000004 
0.1 + 0.2 == 0.3 // False 출력 

하지만 round() 함수를 사용하여 소수점 반올림 시 True 가 출력된다.

x = round(0.1 + 0.2, 2) // 소수점 둘째자리까지 반올림
print(x == 0.3) // True 출력 

*슬라이싱에 대해 간단히 설명해주세요

슬라이싱은 시퀀스 자료형에서 이어진 요소들을 부분적으로 선택할 때 활용한다.
여기서 시퀀스란? "요소들이 연속적으로 이어진 자료형" 이다 ex) string
슬라이싱은 콜론(:)을 사용하여 스텝을 지정한다.

시작인덱스:끝인덱스:스텝

시작인덱스 : 부분 시퀀스의 시작 위치, 기본값은 0

끝인덱스 : 부분 시퀀스의 종료 위치를 지정합니다. 끝인덱스가 생략되면 기본값은 시퀀스의 길이가 된다. 끝인덱스는 내가 7까지의 요소를 슬라이싱 하고 싶다면 +1을 한 8을 입력해야 한다.
아래는 시퀀스의 길이를 구하는 함수다.

len(시퀀스가 들어있는 변수) // 시퀀스 길이 구하는 함수 len()

스텝 : 슬라이스된 요소들의 간격을 지정한다. 생략 가능하고 생략시 기본값은 1이다.

성락 = "허리 부러질 거 같아요"
       012 345 678 91011 // 문자열에서 슬라이싱은 공백도 포함 
print(성락[0:8]) // 출력 : "허리 부러질 ")

0개의 댓글