Contents

[Python] Python의 μžλ£Œν˜•

파이썬의 λ³€μˆ˜μ™€ 객체

C 와 같은 μ–Έμ–΄μ—μ„œ λ³€μˆ˜λŠ” λ©”λͺ¨λ¦¬ 상 μ €μž₯곡간에 직접 값을 ν• λ‹Ήν•œλ‹€λ©΄, νŒŒμ΄μ¬μ—μ„œ λ³€μˆ˜λŠ” λ©”λͺ¨λ¦¬μƒμ— μƒμ„±λœ 객체λ₯Ό μ°Έμ‘° ν•˜λŠ” κ°œλ…μ΄λ‹€.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
>>> x = 100
>>> y = 100
>>> x is y 
True

# 257 λΆ€ν„°λŠ” μ„œλ‘œ λ‹€λ₯Έ 객체둜 생성됨.
>>> x = 257
>>> y = 257
>>> x is y
False

μœ„μ˜ μ˜ˆμ œμ—μ„œλŠ” x 와 y λŠ” 100 μ΄λΌλŠ” λ©”λͺ¨λ¦¬μƒ 같은 객체λ₯Ό 가리킀고 μžˆλ‹€.(= 같은 λ©”λͺ¨λ¦¬ μ£Όμ†Œλ₯Ό 가리킨닀.) νŒŒμ΄μ¬μ—μ„œλŠ” 자주 μ‚¬μš©ν•˜λŠ” μ •μˆ˜ λ²”μœ„(0-256) λŠ” λ©”λͺ¨λ¦¬μ— ν•œ 번만 μ˜¬λ €λ‘κ³  μ—¬λŸ¬ λ³€μˆ˜κ°€ κ°€λ¦¬ν‚€κ²Œ ν•¨μœΌλ‘œμ¨ λ©”λͺ¨λ¦¬λ₯Ό 효과적으둜 μ‚¬μš©ν•˜κ³  μžˆλ‹€.

μžλ°”μ—μ„œ κΈ°λ³Ένƒ€μž…(Primitive Type) 을 wrapper class λ₯Ό μ‚¬μš©ν•˜μ—¬ 객체둜 λ‹€λ£¨λŠ” 것과 λΉ„μŠ·ν•˜κ²Œ λ™μž‘ν•œλ‹€. (ν•˜μ§€λ§Œ μžλ°”μ˜ κ²½μš°λŠ” 100 μ΄λΌλŠ” 값을 κ°–λŠ” μƒˆλ‘œμš΄ λ©”λͺ¨λ¦¬ μ£Όμ†Œλ₯Ό 생성할 수 μžˆλ‹€.)

파이썬의 숫자 μžλ£Œν˜•

νŒŒμ΄μ¬μ—μ„œλŠ” 숫자λ₯Ό μ •μˆ˜(int), μ‹€μˆ˜(float), λ³΅μ†Œμˆ˜(complex) 둜 κ΅¬λΆ„ν•œλ‹€.

1. μ •μˆ˜ν˜• (Integer)

μ •μˆ˜λ₯Ό ν‘œν˜„ν•˜λŠ” μžλ£Œν˜•μœΌλ‘œ 10 μ§„μˆ˜ 이외에도 2μ§„μˆ˜, 8μ§„μˆ˜, 16μ§„μˆ˜ λ‘œλ„ ν‘œν˜„ ν•  수 μžˆλ‹€.

1
2
>>> a = 0o177 # 8μ§„μˆ˜ (Oo λ˜λŠ” 0O μ‹œμž‘)
>>> b = 0x8ff # 16μ§„μˆ˜ (Ox μ‹œμž‘)

2. μ‹€μˆ˜ν˜• (Floating-point)

νŒŒμ΄μ¬μ—μ„œ μ‹€μˆ˜ν˜•μ€ μ†Œμˆ˜μ μ΄ ν¬ν•¨λœ 숫자λ₯Ό μ˜λ―Έν•œλ‹€. μ •μˆ˜λΆ€κ°€ 0 인 μ†Œμˆ˜λŠ” 0 을 μƒλž΅ ν•  수 μžˆλ‹€.

1
2
>>> .1
0.1

μ»΄ν“¨ν„°μ—μ„œλŠ” ν‘œμ€€μ— 따라 λΆ€λ™μ†Œμˆ˜μ  λ°©μ‹μœΌλ‘œ ν‘œν˜„ν•œλ‹€. (IEEE 뢀동 μ†Œμˆ˜μ λ°©μ‹) λΆ€λ™μ†Œμˆ˜μ  λ°©μ‹μ—λŠ” 숫자λ₯Ό μ •μˆ˜λ‘œ 된 μœ νš¨μˆ«μžμ™€ μ •μˆ˜λ‘œ 된 μ§€μˆ˜μ˜ 곱으둜 ν‘œν˜„ν•œλ‹€.

1
2
>>> 123e2 # 123.0 x 100 = 12300.0
12300.0

πŸ’» μ»΄ν“¨ν„°μ—μ„œ 뢀동 μ†Œμˆ˜μ μ— μ˜ν•œ μ‹€μˆ˜ ν‘œν˜„μ€ μ˜€μ°¨κ°€ μ‘΄μž¬ν•œλ‹€.

3. λ³΅μ†Œμˆ˜ (complex)

νŒŒμ΄μ¬μ—μ„œλŠ” ν—ˆμˆ˜λ₯Ό ν‘œμ‹œν•˜λ €λ©΄ i κ°€ μ•„λ‹Œ j λ₯Ό μ‚¬μš©ν•œλ‹€.

1
2
3
4
5
6
>>> a = 3 + 3j
>>> type(a)
<class 'complex'>
>>> a = complex(3, 3)
>>> a
(3+3j)

μ—°μ‚°μž

νŒŒμ΄μ¬μ—μ„œ μ‚¬μš©ν•˜λŠ” μ—°μ‚°μž

μ—°μ‚°μž μ„€λͺ…
+ λ§μ…ˆ
- λΊ„μ…ˆ
* κ³±μ…ˆ
/ λ‚˜λˆ—μ…ˆ
// λ‚˜λˆ—μ…ˆμ˜ λͺ«
% λ‚˜λˆ„μ…ˆμ˜ λ‚˜λ¨Έμ§€
** μ§€μˆ˜ μ—°μ‚°μž
+value λ‹¨ν•­λ§μ…ˆ
-value λ‹¨ν•­λΊ„μ…ˆ
1
2
3
4
5
6
7
8
9
>>> 2 + 2
4
>>> 50 - 5 * 6
20
>>> (50 - 5*6) / 4
5.0
>>> 8 / 5  
1.6
>>> 

/ μ—°μ‚°μžμ˜ 경우 python2 μ—μ„œλŠ” ν•­λͺ©μ— 따라 μ •μˆ˜ν˜•μœΌλ‘œ λ‚˜λˆ„μ–΄ 떨어지지 μ•Šμ„κ²½μš° μ†Œμˆ˜μ μ„ λ²„λ¦ΌμœΌλ‘œμ¨ μ •μˆ˜ν˜•μ„ μœ μ§€ν•˜λŠ” 반면, python3 μ—μ„œλŠ” μ •μˆ˜ν˜•μœΌλ‘œ λ‚˜λˆ„μ–΄ 떨어지지 μ•Šμ„κ²½μš° μžλ™μœΌλ‘œ μ†Œμˆ˜ν˜•μœΌλ‘œ ν˜• λ³€ν™˜λœ κ²°κ³Όλ₯Ό 좜λ ₯ν•œλ‹€.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
Python 2.7.15 (default, Mar 14 2019, 22:47:06) 
[GCC 7.3.0] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> 8 / 5
1

Python 3.7.0 (default, Mar 13 2019, 22:44:23) 
[GCC 7.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> 8 / 5
1.6

/ 의 μ—°μ‚°μžλŠ” 항상 float λ₯Ό λ¦¬ν„΄ν•¨μœΌλ‘œ μ •μˆ˜ν˜• κ²°κ³Όλ₯Ό 리턴받고 μ‹Άλ‹€λ©΄ // μ—°μ‚°μžλ₯Ό μ΄μš©ν•˜λ©΄ λœλ‹€.

인터프리터 ν™˜κ²½μ—μ„œ _ ν™œμš©

파이썬 μΈν„°ν”„λ¦¬ν„°μ—μ„œλŠ” λ§ˆμ§€λ§‰μœΌλ‘œ μ‹€ν–‰λœ 결과값이 _ λΌλŠ” λ³€μˆ˜μ— μ €μž₯λœλ‹€.

1
2
3
4
5
6
7
8
>>> tax = 12.5 / 100
>>> price = 100.50
>>> price * tax
12.5625
>>> price + _ 
113.0625
>>> round(_, 2)
113.06

λ¬Έμžμ—΄

  • 파이썬의 λ¬Έμžμ—΄ ν‘œν˜„μ‹ : ''(Single quotes) λ˜λŠ” "" (double quotes)
  • μ΄μŠ€μΌ€μ΄ν”„ (\) λ₯Ό μ‚¬μš©ν•˜μ—¬ λ¬Έμžμ—΄ λ¦¬ν„°λŸ΄ 내에 μ΄μŠ€μΌ€μ΄ν”„ ν˜Ήμ€ μ—°μ†λœ 3개 μ΄μƒμ˜ λ”°μ˜΄ν‘œ ν‘œν˜„ ν•  수 μžˆλ‹€.
1
2
3
4
5
6
>>> 'spam eggs'  # single quotes
'spam eggs'
>>> 'doesn\'t'  # use \' to escape the single quote...
"doesn't"
>>> "doesn't"  # ...or use double quotes instead
"doesn't"
  • λ¬Έμžμ—΄μ€ + 둜 μ—°κ²°ν•  수 있고 * μ—°μ‚°μžλ‘œ λ°˜λ³΅μ‹œν‚¬ 수 μžˆλ‹€.
  • 두 κ°œμ΄μƒμ˜ λ¬Έμžμ—΄ λ¦¬ν„°λŸ΄μ΄ μ—°μ†μœΌλ‘œ λ‚˜νƒ€λ‚˜λ©΄ μžλ™μœΌλ‘œ 이어 λΆ™μ—¬μ€€λ‹€.
  • λ³€μˆ˜λ“€ 끼리 ν˜Ήμ€ λ³€μˆ˜μ™€ λ¦¬ν„°λŸ΄μ„ 이어 뢙이렀면 + μ—°μ‚°μžλ₯Ό μ‚¬μš©ν•΄μ•Ό ν•œλ‹€.
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
>>> 3 * 'un' + 'ium'
'unununium'

>>> 'Py''thon'
'Python'

# λ³€μˆ˜μ™€ λ¦¬ν„°λŸ΄μ„ 이어 뢙이렀면 + μ‚¬μš©
>> prefix = 'Py'
>>> prefix + 'thon'
'Python'