본문 바로가기
개발아닌개발/Python

[파이썬] 기초 및 문법 정리하는 공부 기록(파이썬 변경 불가능한 자료형 핵심정리)

by 불청객 2023. 3. 20.
반응형

알아두면 좋을 정보

 

사칙연산의 연산자 <C언어와 Python 비교>

연산 C Python
더하기 + +
빼기 - -
곱하기 * *
나누기 /(묵시적 형변환 :실수) /
나눗셈의 몫 구하기 /(묵시적 형변환 :정수) //
나눗셈의 나머지 구하기 % %

 

여러가지 진법들

진법 접두사 출력함수
16진수 0x hex( )
8진수 0o oct( )
2진수 0b bin( )

 

부동소수점이란?

실수를 지원하기 위해 부동 소수형을 제공함.

이는, 소수점을 움직여서 소수를 표현하는 자료형으로 8바이트 만을 이용하여 수를 표현한다.(표현범위 제한적)

또한 미미한 값이지만 오차가 발생하기 때문에 정밀도가 떨어진다. 

파이썬 내에서 정밀도를 가진 수를 다루기 위해선 파이썬 표준 라이브러리 decimal을 이용하면 됨.

 

* 파이썬은 형변환이 유연하므로, 자료형 확인을 할 때는 type( ) 함수를 사용하여 확인한다.

 

절대값, 버림, 반올림

  • abs() : 절대값 함수
  • round() : 반올림 함수
  • trunc() : 버림 함수 [math 모듈]

 

import math

모듈 내에 들어있다면, import 구문 사용해야 함. 예를 들면 아래와 같이,

>>> import math
>>> math.trunc(2.8)
2
  • factorial( ) : 팩토리얼
  • degrees( ) : 라디안에서 도
  • radiands( ) : 도에서 라디안으로
  • 삼각함수와 역함수 [ cos( ), sin( ), tan( ), acos( ), asin( ), atan( ) ]
  • pow( , ) : 제곱
  • sqrt( ) : 제곱근
  • log( , ) : 로그
    두번째 매개변수를 생략하면 자연 로그와 같음.
  • log10( ) : 밑수가 10인 로그

 

Immutable과 Mutable

파이썬의 변경가능한 자료형과 변경 불가능한 자료형

변경 가능(Immutable) : list, set, dictionary / 변경 불가능(Mutable) : int, float, tuple 

변경 불가능한 자료형들은 한번 생성된 요소는 변경 및 삭제가 불가하다. 

그렇기 때문에, dictionary 에서 변경이 가능한 자료형Key가 될수 없다.

 

흔한 비교 대상↓

리스트( O )  튜플 ( X )
a = [1, 2, 3]
a[0] = 3
b = (1, 2, 3)
b[0] = 3

 

이해 1) 파이썬의 바인딩을 생각

파이썬의 경우 바인딩했을때 실제 데이터가 새로 생기는지, 주소값만 복사되는지가 자료형에 따라서 달라집니다.
1) int, float, tuple 은 데이터가 새로 생겨나고 (별도의 객체가 생성. 사본(?) 수정시 원본 변경 없음)
2) list, set, dict는 주소값만 복사됩니다. (객체의 별명, 사본(?) 수정시 원본 변경)

 

 

파이썬 바인딩에 관련하여

궁금증.왜 정수, 튜플,딕셔너리에서만 수정을 했을때 a와b가 달라지는가요?기존의 지식으로는 b=a라고 표현할때 a에게 바인딩 되어 a가 표현하는 객체를 나타내는또다른 별명이 생긴다...

kin.naver.com

 

 

이해 2) 객체 생성 시 할당되는 주소값 확인

#int
a = 3
b = 3
print("{0:<20} {1}" .format(id(a), id(b)))	#앞에서부터 채우는데 20칸을 할당한다
print(a is b)

#list
c = [1,2]
d = [1,2]
print("{0:<20} {1}" .format(id(c), id(d)))	#앞에서부터 채우는데 20칸을 할당한다
print(c is d)
140727454069608 140727454069608
True
1724227459712 1724227464256
False

 

 

  • 주소를 알아내는 함수 id()
a = "hello"
b = ["hello", "python"]

print(id(a))
print(id(b))
print(id(b[0]))
1745025253296
1745031275840
1745025253296

a의 hello와 b의 hello는 동일한 주소값을 갖는다. = 같은 객체를 의미함.

 

  • 문자열의 주소
a = "test"
print(id(a))
a = "test1"
print(id(a))
2555396338928
2555429339056

파이썬의 문자열 객체는 수정이 불가능함.
때문에 test1이라는 새로 생성된 문자열 객체를 생성하여 할당하고나면, 기존의 문자열은 가비지 콜렉터에 의해 자동 소멸됨.

 

  • 문자열 중간 수정하기
str = "pithon"
str[1] = "y"
print(str)

오류발생

문자열은 변경불가한 자료형이다. ( 튜플 등 )

더보기

방안1

str = "pithon"
result = str[:1] + 'y' + str[2:]
print(result)

슬라이딩을 통해 새로운 문자열 만들기

 

728x90
반응형

댓글