Python Basic/혼공파
[혼공파] Chapter 02 자료형
EASYH
2021. 1. 7. 18:13
- 는 개념 정리
- 는 개인적으로 새롭게 알게 된 점
# 함수 정의
2-1. 자료형과 문자열
[용어 정리]
- 자료: 프로그램이 처리할 수 있는 모든 것
- 자료형: 자료의 형식
type() # 자료형의 확인 할 때 사용하는 함수
파이썬에서도 수많은 자료를 다루며, 개발자들이 쉽게 사용할 수 있도록 기능과 역할에 따라서 자료를 구분함.
- 문자열 (String)
- 숫자 (Number)
- 불 (Boolena)
* 각각의 자료는 사용할 수 있는 연산자가 정해져 있음. *
문자열 연산자
- 문자열 연결 연산자: +
- 문자열 반복 연산자: *
- 문자 선택 연산자 (인덱싱): []
- 문자열 범위 선택 연산자 (슬라이싱): [:]
len() # 문자열의 길이를 구할 때 사용하는 함수
2-2. 숫자
[숫자의 종류]
- 정수: interger(int)
- 부동 소수점 (실수): floating point (float)
파이썬에서의 지수 표현
- 0.52273e2 => 52.273
- 0.52273 * 10^2을 0.52273e2 로 표현함
숫자 연산자
- 사칙 연산자: +, -, *, /
- 정수 나누기 연산자: // (숫자를 나누고 소수점 이하의 자릿수 떼어버림)
- 나머지 연산자: %
- 제곱 연산자: **
2-3. 변수와 입력
[용어 정리]
- 변수: 값을 저장할 때 사용하는 식별자
- 변수 선언: 변수를 생성하는 것
- 값 할당: 변수에서 값을 넣는 것
- 변수 참조: 변수에서 값을 꺼내는 것
프로그래밍 언어 중 C, C++, 자바, C# 등에서는 기본적으로 변수를 사용할 때 변수의 자료형에 대해 미리 선언해 주어야 함. 그러나 파이썬은 변수에 자료형을 지정하지 않음. 유연하다는 장점이 있지만, 오히려 변수에 어떠한 자료형이 들어 있는지 모르고 실수해서 실행 중에 TypeError를 발생할 확률이 높음. 따라서 하나의 변수에는 되도록 하나의 자료형을 넣어 활용하는 것이 좋음.
input() # 사용자로부터 데이터를 입력받을 때 사용하는 함수. input 함수의 리턴값의 자료형은 항상 string 임
int() # 문자열을 int 자료형으로 변환
float() # 문자열을 float 자료형으로 변환
str() # 숫자를 문자열로 치환
2-4. 숫자와 문자열의 다양한 기능
문자열과 관련된 함수
format()
# 중괄호 {} 를 포함한 문자열 뒤에 마침표(.)를 찍고 format() 함수 사용
# 문자열의 {} 기호가 format() 함수 괄호 안에 있는 매개변수로 차례로 대치됨녀서 숫자가 문자열이 됨
upper() # 문자열의 알파벳을 대문자로 만듦
lower() # 문자열의 알파벳을 소문자로 만듦
# 문자열의 구성 파악
isalnum() # 문자열이 알파벳 또는 숫자로만 구성되어 있는지 확인
isalpha() # 문자열이 알파벳으로만 구성되어 있는지 확인
isidentifier() # 문자열이 식별자로 사용할 수 있는 것인지 확인
isdecimal() # 문자열이 정수 형태인지 확인
isdigit() # 문자열이 숫자로 인식될 수 있는 것인지 확인
isspace() # 문자열이 공백으로만 구성되어 있는 것인지 확인
islower() # 문자열이 소문자로만 구성되어 있는지 확인
isupper() # 문자열이 대문자로만 구성되어 있는지 확인
# 문자열 찾기
find() # 문자열 내부에 특정 문자가 어디에 위치하는지 확인 (왼쪽부터 찾아서 처음 등장하는 위치)
rfind() # 오른쪽부터 찾아서 처음 등장하는 위치
# 문자열 in 연산자
# 문자열 내부에 어떤 문자열이 있는지 확인하려면 in 연산자 사용
split() # 문자열을 특정한 문자로 자를 때 사용하는 함수. 실행결과로 리스트가 나옴
나머지 공부
re.split()
re 메소드와 정규표현식을 이용한다면, re의 split 메소드를 이용할 수 있음.
re.split() 는 str.split() 와 다르게 다양한 구분자 처리 가능.
CODE 1
a = "apple orange banana tomato"
print(a.split())
print(re.split(r"\s+", a))
- <공백문자>를 의미하는 \s 와 <1개 이상의 문자> 를 의미하는 + 를 조합하여, 구분자로 분리해냄.
OUTPUT 1
['apple','orange','banana','tomato']
['apple','orange','banana','tomato']
CODE 2
a = "apple orange:banana tomato"
print(re.split(r"[:,\s]+", a))
- : 또는 , 또는 <공백문자>를 의미하는 \s 를 구분자로 사용하면서
- + 기호를 통해서, : 혹은 , 혹은 공백 문자 등이 여러 개가 나온 것임을 의미.
OUTPUT 2
['apple','orange','banana','tomato']
CODE 3
a = "apple orange:banana tomato"
print(re.split(r"[:,\s+]", a))
- : 또는 , 또는 <공백문자>를 의미하는 \s 를 구분자로 사용하는데,
- CODE 2와는 다르게 + 기호가 [] 안에 위치함.
- 이는 : 혹은 , 혹은 공백 문자 혹은 + 기호를 구분자로 사용한다는 의미로, 정확한 split이 이뤄지지 않음. 주의.
OUTPUT 3
['apple','orange','banana','','','','tomato']
CODE 4
a = "apple orange:banana tomato"
print(re.split(r"[:,]|\s+", a))
- 혹은 or를 의미하는 | 를 사용하여
- : 혹은 , 혹은 | 여러개, 이렇게 표현할 수도 있음.
OUTPUT 4
['apple','orange','banana','tomato']
21.01.09 추가
1. 10<x<30 에 대한 의문 => 10<x<30 으로 if 문을 사용한다고 하더라도 잘 작동함.
2. Type; Naming 방식 -- 헝가리안 표기법 (Hungarian Notation)
컴퓨터 프로그래밍에서 변수 및 함수의 이름 인자 앞에 데이터 타입을 명시하는 코딩 규칙
공통
접두어 | 데이터 타입 |
b | byte, boolean |
n | int, shot |
i | int, shot(주로 인덱스로 사용) |
c | int, short(주로 크기로 사용) |
l | long |
f | float |
d, db | double |
ld | long double |
w | word |
dw | double word |
qw | quad word |
ch | char |
sz | NULL로 끝나는 문자열 |
str | C++ 문자열 |
arr | 배열(문자열 제외): 다른 접두어와 조합 가능 |
p | 포인터(16bit, 32bit): 다른 접두어와 조합 가능 |
lp | 포인터(64bit): 다른 접두어와 조합 가능 |
psz | NULL로 끝나는 문자열을 가리키는 포인터(16bit, 32bit) |
lpsz | NULL로 끝나는 문자열을 가리키는 포인터(64bit) |
fn | 함수 타입 |
pfn | 함수 포인터(16bit, 32bit) |
lpfn | 함수 포인터(64bit) |
OOP (객체 지향 프로그래밍)
접두어 | 데이터 타입 |
g_ | 네임스페이스의 글로벌 변수 |
m_ | 클래스의 멤버 변수 |
s_ | 클래스의 static 변수 |
c_ | 함수의 static 변수 |