λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°

개발/Python

Advanced Python #1 [Notion : 1/2]

Environment Setting

  • Python 3.9.5
  • IDE Pycharm, Jupyter Notebook, Github Codespace  

πŸ‘‰ Introduction to Variable

λ³€μˆ˜λž€?
  값을 μ €μž₯ν•˜λŠ” 곡간 = μ—°μ‚°μžλ‘œ λŒ€μž…μ—°μ‚°

파이썬 λ³€μˆ˜μ˜ νŠΉμ§•
  λͺ¨λ“  λ³€μˆ˜λŠ” Memory Addressλ₯Ό 가리킨닀. 즉, λͺ¨λ“  것은 포인터닀!

λ³€μˆ˜λͺ…
  μΌμ’…μ˜ μ΄λ¦„ν‘œ, μ„ μ–Έν•œ λ³€μˆ˜μ— νŠΉμ • 곡간이 μƒκΈ°λŠ” κ°œλ…μ΄ μ•„λ‹ˆλ‹€!
  ν•„μš”ν• λ•Œλ§ˆλ‹€ 곡간을 λ§Œλ“€κ³  λ³€μˆ˜λͺ…을 λΆ™μž„!

a = 15
b = 4
a+b

#19

a = 15
b = a
b

#15

πŸ‘‰ How to name Variables

  • μ•ŒνŒŒλ²³, 숫자, μ–Έλ”μŠ€μ½”μ–΄(_)둜 μ„ μ–Έ
    • 숫자둜 λ³€μˆ˜λͺ…을 μ‹œμž‘ν•  수 μ—†μŒ.
    • data = 0, _al=2, _gg='adfaf'
  • λ³€μˆ˜λͺ…은 κ·Έ λ³€μˆ˜μ˜ νŠΉμ§•μ΄ 잘 μ‚΄μ•„μžˆκ²Œ μž‘λͺ…ν•˜μž.
    • 가독성이 제일 μ€‘μš”ν•˜λ‹€.
    • name = 'Hojun Cho
  • λ³€μˆ˜λͺ…은 λŒ€μ†Œλ¬Έμžλ₯Ό κ΅¬λΆ„ν•˜κ³  μ˜ˆμ•½μ–΄λ₯Ό μ‚¬μš©ν•  수 μ—†λ‹€.
    • abc와 ABCλŠ” λ‹€λ₯΄λ‹€.
    • for, if, else, True λ“±μ˜ μ˜ˆμ•½μ–΄λŠ” λ³€μˆ˜λͺ…μœΌλ‘œ μ‚¬μš©ν•  수 μ—†λ‹€.

πŸ‘‰ Assinging Variables

  • C언어와 달리 λŒ€μž…μ—°μ‚°μ΄ λ”±νžˆ λ°˜ν™˜ 값을 κ°€μ§€λŠ” 게 μ•„λ‹ˆλ‹€.
  • μ—°μ†ν•΄μ„œ λŒ€μž…μ΄ κ°€λŠ₯ν•˜λ‹€.
  • := μ—°μ‚°μœΌλ‘œ λŒ€μž…κ³Ό λ™μ‹œμ— λ°˜ν™˜μ΄ κ°€λŠ₯ν•˜λ‹€.
# C와 달리 λŒ€μž…μ—°μ‚°μ΄ λ”±νžˆ λ°˜ν™˜ 값을 κ°€μ§€λŠ” 것이 μ•„λ‹ˆλ‹€.
(a=2)==2 #Syntax Error

# Input In [3]
#    (a=2)==2
#     ^
# SyntaxError: invalid syntax. Maybe you meant '==' or ':=' instead of '='?

# μ—°μ†ν•΄μ„œ λŒ€μž…μ΄ κ°€λŠ₯ν•˜λ‹€. (C와 같이 λ’€μ—μ„œλΆ€ν„° λŒ€μž…)

A = B = 2
print(A)
print(B)

# 2
# 2

# := μ—°μ‚°μœΌλ‘œ λŒ€μž…κ³Ό λ™μ‹œμ— λ°˜ν™˜μ΄ κ°€λŠ₯ν•˜λ‹€. (Python 3.9 이상)
(c := 2) == 2

# True

πŸ‘‰ Primitive Data Types

  • Primitive Data Type(μ›μ‹œ μžλ£Œν˜•) : κ°€μž₯ 기본이 λ˜λŠ” μžλ£Œν˜•
    • int(μ •μˆ˜ν˜•)
      • overflowκ°€ λ°œμƒν•˜μ§€ μ•ŠμŒ
      • λͺ…μ‹œμ μΈ short type이 μ—†μŒ
    • float(μ‹€μˆ˜ν˜•)
      • λΆ€λ™μ†Œμˆ˜μ , Double precision
    • complex(λ³΅μ†Œμˆ˜)
      • ν—ˆμˆ˜λΆ€μ™€ ν—ˆμˆ˜λΆ€λ₯Ό λ‚˜λˆ μ„œ ν‘œν˜„
      • ν—ˆμˆ˜λΆ€λŠ” jλ˜λŠ” J둜 ν‘œν˜„
    • string(λ¬Έμžμ—΄)
      • λ”°μ˜΄ν‘œλ‘œ ν‘œν˜„
      • Unicode
      • 큰 λ”°μ˜΄ν‘œ, μž‘μ€ λ”°μ˜΄ν‘œ 차이 μ—†μŒ
    • bool(논리)
      • True / False κ°’ 밖에 μ—†μŒ
    • None(None)
      • None νƒ€μž…
      • μΌμ’…μ˜ null
      • None κ°’ 밖에 μ—†μŒ
    a = 15 # μ •μˆ˜
    print(a)
    
    b = 1.5 # μ‹€μˆ˜
    print(b)
    
    c = 1+5j # λ³΅μ†Œμˆ˜
    print(c)
    
    d = "text" # λ¬Έμžμ—΄
    print(d)
    
    e = True # Boolean, λŒ€μ†Œλ¬Έμžμ— 주의
    print(e)
    
    f = None # None, λŒ€μ†Œλ¬Έμžμ— 주의
    print(f)
    
    # 15
    # 1.5
    # (1+5j)
    # text
    # True
    # None
    

πŸ‘‰ Feature of Arithmetic & Bit Operator

  • In-Place μ—°μ‚°
    • a += 1은 In-Place 연산이닀.
    • κΈ°μ‘΄ 객체λ₯Ό μˆ˜μ •μ‹œλ„ν•˜κ³ , λΆˆκ°€λŠ₯ν•  μ‹œ μƒˆλ‘œμš΄ 객체λ₯Ό μƒμ„±ν•œλ‹€.
  • Out-Place μ—°μ‚°
    • a = a+1은 Out-Place 연산이닀.
    • λͺ…μ‹œμ μœΌλ‘œ μƒˆλ‘œμš΄ 객체λ₯Ό μƒμ„±ν•œλ‹€.
  • a++ 연산은 νŒŒμ΄μ¬μ— μ‘΄μž¬ν•˜μ§€ μ•ŠλŠ”λ‹€.
# Arithmetic Operator
print(50+12) # Addition
print(30-46) # Substract
print(2*6) # Multifly
print(2**3) # Exponentiation
print(3/2) # Division
print(13//5) # Quotient
print(13%5) # Remainder

# 62
# -16
# 12
# 8
# 1.5
# 2
# 3
# In-Place μ—°μ‚°
a = 5
a = a+1
a

# 6

a+=1
a

#7
# Out-Place μ—°μ‚°
a = 7
a = a^4
a

# 3

a^=4
a

# 7

πŸ‘‰ Condition Operatiors

  • X is Y : X와 Y의 μ£Όμ†Œκ°€ κ°™λ‹€.
  • x is not Y : x와 y의 μ£Όμ†Œκ°€ λ‹€λ₯΄λ‹€.
a = 3
print(a<4)
print(a>2)
print(2<a and a<4)
print(2<a<4)
print(not a > 3)

# True
# True
# True
# True
# True

πŸ‘‰ Features of Primitive Data Types

  • μ›μ‹œμžλ£Œν˜•λ“€μ€ λΆˆλ³€νƒ€μž…(Immutable Type)이닀.
  • μ›μ‹œμžλ£Œν˜•κ³Ό Tuple을 μ œμ™Έν•œ λ‹€λ₯Έ λͺ¨λ“  파이썬 κ°μ²΄λŠ” κ°€λ³€νƒ€μž…(Mutable Type)이닀.
# νŒŒμ΄μ¬μ—μ„œ λŒ€μž…μ€ μ›μΉ™μ μœΌλ‘œ λ©”λͺ¨λ¦¬ μ£Όμ†Œ 볡사 (즉, 값을 λ³΅μ‚¬ν•˜μ§€ μ•Šκ³  같은 μ£Όμ†Œλ₯Ό 곡유)
# λΆˆλ³€ν˜•μ˜ 경우 μˆ˜μ •μ΄ ν•„μš”ν•  κ²½μš°μ— μƒˆλ‘œμš΄ 객체λ₯Ό 생성

a = 10
b = a
a += 1
a, b, a is b

# (11, 10, False)
a = [1,2,3]
b = a
a += [4]
a, b, a is b

# ([1, 2, 3, 4], [1, 2, 3, 4], True)
a = a+[5]
a, b, a is b

# ([1, 2, 3, 4, 5], [1, 2, 3, 4], False)

πŸ‘‰ Dynamic Typing

  • μ½”λ“œ μ‹€ν–‰μ§€μ μ—μ„œ λ°μ΄ν„°μ˜ νƒ€μž…μ„ κ²°μ •ν•œλ‹€.

πŸ‘‰ Type Conversion

  • Type으둜 λͺ…μ‹œμ  ν˜• λ³€ν™˜μ΄ κ°€λŠ₯ν•˜λ‹€.
  • type([variable])으둜 ν•΄λ‹Ή λ³€μˆ˜μ˜ νƒ€μž…ν™•μΈμ΄ κ°€λŠ₯ν•˜λ‹€.
  • isinstance([variable], [type])으둜 λ³€μˆ˜κ°€ μ§€μ •νƒ€μž…μΈμ§€ 확인 κ°€λŠ₯ν•˜λ‹€.
# Type Checking
a = 123
b = 12.3
c = '12.3'
isA = isinstance(a, float)
isB = isinstance(b, float)
isC = isinstance(c, str)

print(type(a))
print(type(b))
print(type(c))
print('-'*15)
print(isA)
print(isB)
print(isC)

# <class 'int'>
# <class 'float'>
# <class 'str'>
# ---------------
# False
# True
# True

 

'개발 > Python' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€

Advanced Python #5 [Notion : 1/4]  (0) 2023.04.30
Advanced Python #4 [Notion : 1/3]  (0) 2023.04.30
Advanced Python #3 [Notion : 1/3]  (0) 2023.04.30
Advanced Python #2 [Notion : 1/3]  (0) 2023.04.30