본문 바로가기
Python/Python 기초

[Python] 변수와 데이터 타입 / 객체

by snow_white 2022. 3. 12.

 

식별자(Identifier)

클래스, 함수, 변수를 구분하거나 지칭하기 위해서 이름을 지정하는 것

1. 키워드를 사용 못함
2. 변수나 함수명 지을 때 특수문자는 _만 허용
3. 변수나 함수명 지을 때 숫자는 2번째 문자부터 허용
4. 변수, 함수, 클래스명 지을 때 공백 허용할 수 없음
import keyword
print(keyword.kwlist)

``` 
예약어 (고정된 단어)로는 식별자 고를 수 없음
['False', 'None', 'True', '__peg_parser__', 'and', 'as', 'assert', 'async', 'await', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']
```

식별자 규약(Identifier Convention)

1. Camel Case
클래스의 이름을 지정할 때만 사용
클래스 이름은 대문자로 시작
문자와 문자가 조합될 때 2번째 문자 첫 번째 글자는 다시 대문자
ex) CoffeeHouse (O)
ex) coffeeHouse (X)
 
2. snake_case
변수명과 함수명은 무조건 소문자로 시작
소문자로 시작하는 모든 이름은 snake_case 기법을 따른다.
ex) get_info(), house_name

변수와 데이터 타입

기본형

  • int - 정수
  • float - 실수
  • bool - False, True
  • str – 문자열

자료형, 값이 여러 개 있을 때 쓰는 것

  • list - 리스트, 순서가 있는 값들의 집합 [ ], 값은 변경 가능 => Ordered
  • tuple - 튜플, 순서가 있는 값들의 집합 ( ), 값은 변경 불가 => Ordered
  • set - 순서없고 중복 안되는 값들의 집합, { } => Unique
  • dic - 키와 값이 쌍으로 저장되는 값들의 집합 {'key':value} => 순서 없음, key는 중복 불가, value는 중복 가능

 

Type 변경하기 (Type Casting)

문자를 숫자로 변경 : int()
숫자를 문자로 변경 : str()

 

print(int(True))		# 1
print(int(False)) 		# 0
#print(int('Hello')) ValueError(변환할 수 없는 값을 변환하려 할 때 발생)
print(int('321')) # 숫자로 캐스팅 가능
print(bool(1))#True
print(bool(0))#False
print(float(77)) # 77.000000
a = "3.140"
float(a)
>> 3.14

a = "3.14O" # 숫자 0 아니고, 영문자 O
float(a)
>> ValueError: could not convert string to float: '3.14O'

 

문자열

인덱싱 : str[0]

슬라이싱 : str[0:1]

my_str = 'python'
print(my_str[0])		# p
print(my_str[5])		# n
print(my_str[-1])		# n

print(my_str[1:4])		# yth
print(my_str[-5:-2])		# yth
print(my_str[:])		# python
print(my_str[2:])		# thon
print(my_str[:4])		# pyth
print(my_str[-2:])		# on

#print(my_str[-4:1]) 		# 빈공간 출력됨
print(my_str[0:6:2]) 		# pto [시작점 : 끝점 : step]		 
print(my_str[::2])		# pto
print(my_str[-6:-1:2])		# pto
print(my_str[::-1]) 		# nohtyp -1스텝은 거꾸로 진행
print(my_str[::1])		# python

 

문자열 주요함수

 

  • split() : 문자열을 쪼갤 때 사용
  • join() : 문자열을 붙이기
  • len() : 문자열 길이 구하기
  • count() : 문자 개수 세기
  • find() : 위치 알려주기
  • index() : 위치 알려주기
  • join() : 문자열 삽입
  • upper() :소문자를 대문자로 바꾸기
  • lower() :대문자를 소문자로 바꾸기
  • replace() : 문자열 바꾸기
  • strip() : 양쪽 공백 지우기
a = "Life is too short"
a.split(' ')
>> ['Life', 'is', 'too', 'short']

movies = "미나리, 경계선, 기생충,   학교"
print(movies) # 미나리, 경계선, 기생충,   학교
print(len(movies)) # 19

moviesL = movies.split(",")
print(moviesL) # ['미나리', ' 경계선', ' 기생충', '   학교']
print(movies.split()) # ['미나리,', '경계선,', '기생충,', '학교']

# join은 str에 적용되는 함수
mov = ''.join(moviesL)
print(mov) # 미나리 경계선 기생충   학교
print(type(mov)) # <class 'str'>

a = "hobby"
a.count('b') 	#2
len(a)		#5

a = "Life is too short"
a.index('t')	# 8
# a.index('k')
# ValueError: substring not found

a = "Life is too short"
a.replace("Life", "Your leg") #Your leg is too short

 

 

연산자

  • == 같다
  • = 대입
  • // 몫 구하기
  • % 나머지 구하기
  • ** 거듭제곱
e = 3
f = 3.0
print(e==f) # True
print(e!=f) # false
print(type(e)==type(f)) # false

a,b,c = 13,5,-5
print(a//b) # 몫 구하기 2
print(a%b)  # 나머지 구하기 3
print(abs(c)) # 절댓값 취하기 5

# 2의 10승은?
print(2**10) # 1024
print(pow(2,10)) # 1024

객체

 

파이썬은 모든 변수를 객체 취급한다.

모두 객체로서 메모리가 할당된다.

a = 257
b = 257
print(id(a)) # 주소값 출력
print(id(b))
print(id(a)==id(b)) # False
print(a is b) # 객체가 서로 같지 않다. False

a = 200
b = 200
# 값 비교
print(a==b)
# 객체 비교.. is (주소값)
print(a is b) # True
 

a와 b 비교하는 같은 문장인데 왜 주소값을 비교했을 때 a와 b가 257일 땐 false이고, 200일 땐 true인가?

 

int형 변수 범위가 5 ~ 256 사이에 있으면 메모리를 효율적으로 사용하기 위해서 이 범위에 있는 값들은 한 번만 객체 생성하고, 다른 객체 새로 생성하지 않는다고 한다!

 

 

'Python > Python 기초' 카테고리의 다른 글

[Python] 딕셔너리 자료형  (0) 2022.03.12
[Python] 튜플 자료형  (0) 2022.03.12
[Python] 리스트 자료형  (0) 2022.03.12
[Python] 파이썬 입문  (0) 2022.03.12
[Python] 아나콘다 설치 / 주피터 노트북 사용하기  (0) 2022.03.12

댓글