CodeGym /์ž๋ฐ” ์ฝ”์Šค /Python SELF KO /๋ชจ๋“ˆ ์ž„ํฌํŠธ

๋ชจ๋“ˆ ์ž„ํฌํŠธ

Python SELF KO
๋ ˆ๋ฒจ 19 , ๋ ˆ์Šจ 0
์‚ฌ์šฉ ๊ฐ€๋Šฅ

1.1 ๋ชจ๋“ˆ ๊ฐœ์š”

Python์—์„œ ๋ชจ๋“ˆ์€ .py ํ™•์žฅ์ž๋ฅผ ๊ฐ–๋Š” ํŒŒ์ผ๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ์–ด. ๋ชจ๋“ˆ์€ ํฐ ์ฝ”๋“œ ๋ฉ์–ด๋ฆฌ๋ฅผ ์ž‘๊ณ  ๊ด€๋ฆฌํ•˜๊ธฐ ์‰ฌ์šด ์กฐ๊ฐ์œผ๋กœ ๋‚˜๋ˆ„๊ฒŒ ํ•ด์ค˜. ๊ฐ ๋ชจ๋“ˆ์€ ํ•จ์ˆ˜, ํด๋ž˜์Šค, ๋ณ€์ˆ˜๋ฅผ ํฌํ•จํ•  ์ˆ˜ ์žˆ๊ณ , ์ž„ํฌํŠธ๋  ๋•Œ ์‹คํ–‰๋˜๋Š” ์ฝ”๋“œ๋„ ํฌํ•จํ•  ์ˆ˜ ์žˆ์–ด.

๊ฐ„๋‹จํ•œ ๋ชจ๋“ˆ ์˜ˆ์ œ

๋ชจ๋“ˆ mymodule.py๋ฅผ ๋งŒ๋“ค์–ด๋ณด์ž:


# mymodule.py

def greet(name):
    return f"Hello, {name}!"
            
pi = 3.14159
        

์ด์ œ ์ด ๋ชจ๋“ˆ์„ ๋‹ค๋ฅธ ํŒŒ์ผ์—์„œ ์ž„ํฌํŠธํ•ด์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์–ด.

1.2 ๋ชจ๋“ˆ ์ž„ํฌํŠธ

Python์—์„œ๋Š” ๋ชจ๋“ˆ์„ ์ž„ํฌํŠธํ•˜๋Š” ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์„ ์ œ๊ณตํ•ด. ํ•˜๋‚˜์”ฉ ์‚ดํŽด๋ณด์ž.

์ „์ฒด ๋ชจ๋“ˆ ์ž„ํฌํŠธ

์ด ์ž‘์—…์˜ ์ผ๋ฐ˜์ ์ธ ๋ฌธ๋ฒ•์€ ๋‹ค์Œ๊ณผ ๊ฐ™์•„:


import ๋ชจ๋“ˆ

์ด ๋ฐฉ๋ฒ•์€ ์ „์ฒด ๋ชจ๋“ˆ์„ ์ž„ํฌํŠธํ•ด, ๋ชจ๋“ˆ ์ด๋ฆ„์„ ์‚ฌ์šฉํ•˜์—ฌ ํ•จ์ˆ˜์™€ ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์–ด.


import ๋ชจ๋“ˆ

print(๋ชจ๋“ˆ.greet("Alice"))  # ์ถœ๋ ฅ: Hello, Alice!
print(๋ชจ๋“ˆ.pi)  # ์ถœ๋ ฅ: 3.14159
        

์ด์ „์— math ๋ชจ๋“ˆ๋กœ ์ด๋ฅผ ํ–ˆ๋˜ ๊ฑธ ๊ธฐ์–ตํ•˜๋‹ˆ?


import math

print(math.ceil(13 / 7))  # ์˜ฌ๋ฆผ
print(math.floor(13 / 7))  # ๋‚ด๋ฆผ
        

๋ชจ๋“ˆ์—์„œ ํŠน์ • ์š”์†Œ ์ž„ํฌํŠธ

๋ชจ๋“ˆ์˜ ๋ชจ๋“  ๊ฒƒ์„ ์ž„ํฌํŠธํ•˜์ง€ ์•Š๊ณ , ํŠน์ • ์š”์†Œ๋งŒ ์ž„ํฌํŠธํ•  ์ˆ˜๋„ ์žˆ์–ด. ์ผ๋ฐ˜์ ์ธ ๋ฌธ๋ฒ•์€ ๋‹ค์Œ๊ณผ ๊ฐ™์•„:


from ๋ชจ๋“ˆ import func, var

์ด ๋ฐฉ๋ฒ•์€ ๋ชจ๋“ˆ์˜ ํŠน์ • ํ•จ์ˆ˜, ํด๋ž˜์Šค ๋˜๋Š” ๋ณ€์ˆ˜๋ฅผ ์ž„ํฌํŠธํ•˜์—ฌ ๋ชจ๋“ˆ ์ด๋ฆ„ ์—†์ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค˜.


from mymodule import greet, pi

print(greet("Bob"))  # ์ถœ๋ ฅ: Hello, Bob!
print(pi)  # ์ถœ๋ ฅ: 3.14159
        

๋ณ„์นญ์„ ์‚ฌ์šฉํ•˜๋Š” ๋ชจ๋“ˆ ์ž„ํฌํŠธ

์ด ์ž‘์—…์˜ ์ผ๋ฐ˜์ ์ธ ๋ฌธ๋ฒ•์€ ๋‹ค์Œ๊ณผ ๊ฐ™์•„:


import ๋ชจ๋“ˆ as ๋ณ„์นญ

์ด ๋ฐฉ๋ฒ•์€ ๋ชจ๋“ˆ์„ ์ž„ํฌํŠธํ•˜๊ณ  ๋‹ค๋ฅธ ์ด๋ฆ„์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค˜, ๊ธด ๋ชจ๋“ˆ ์ด๋ฆ„์„ ์ค„์ด๊ฑฐ๋‚˜ ์ด๋ฆ„ ์ถฉ๋Œ์„ ํ•ด๊ฒฐํ•˜๋Š”๋ฐ ์œ ์šฉํ•ด.


import mymodule as mm

print(mm.greet("Charlie"))  # ์ถœ๋ ฅ: Hello, Charlie!
print(mm.pi)  # ์ถœ๋ ฅ: 3.14159
        

๋ชจ๋“ˆ์˜ ๋ชจ๋“  ์š”์†Œ ์ž„ํฌํŠธ

์ด ์ž‘์—…์˜ ์ผ๋ฐ˜์ ์ธ ๋ฌธ๋ฒ•์€ ๋‹ค์Œ๊ณผ ๊ฐ™์•„:


from ๋ชจ๋“ˆ import *

์ด ๋ฐฉ๋ฒ•์€ ๋ชจ๋“ˆ์˜ ๋ชจ๋“  ํ•จ์ˆ˜, ํด๋ž˜์Šค ๋ฐ ๋ณ€์ˆ˜๋ฅผ ์ž„ํฌํŠธํ•˜์—ฌ ๋ชจ๋“ˆ ์ด๋ฆ„ ์—†์ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค˜. ํ•˜์ง€๋งŒ ์ด ๋ฐฉ๋ฒ•์€ ์ด๋ฆ„ ์ถฉ๋Œ์„ ์ผ์œผํ‚ฌ ์ˆ˜ ์žˆ๊ณ , ์ฝ”๋“œ ์ฝ๊ธฐ๋ฅผ ์–ด๋ ต๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ถŒ์žฅ๋˜์ง€ ์•Š์•„.


from mymodule import *

print(greet("Dave"))  # ์ถœ๋ ฅ: Hello, Dave!
print(pi)  # ์ถœ๋ ฅ: 3.14159
        

1.3 ์ž„ํฌํŠธ ๊ณผ์ •์˜ ๋‚ด๋ถ€

๋ชจ๋“ˆ ๊ฒ€์ƒ‰ ์ˆœ์„œ

๋ชจ๋“ˆ์„ ์ž„ํฌํŠธํ•  ๋•Œ, Python์€ ํŠน์ •ํ•œ ์ˆœ์„œ๋กœ ์ด๋ฅผ ๊ฒ€์ƒ‰ํ•ด:

  1. ํ˜„์žฌ ๋””๋ ‰ํ† ๋ฆฌ: Python์€ ๋จผ์ € ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ์‹คํ–‰๋œ ํ˜„์žฌ ๋””๋ ‰ํ† ๋ฆฌ์—์„œ ๋ชจ๋“ˆ์„ ์ฐพ์•„.
  2. ํ™˜๊ฒฝ ๋ณ€์ˆ˜ PYTHONPATH: ํ˜„์žฌ ๋””๋ ‰ํ† ๋ฆฌ์—์„œ ๋ชจ๋“ˆ์„ ์ฐพ์ง€ ๋ชปํ•˜๋ฉด, Python์€ PYTHONPATH ํ™˜๊ฒฝ ๋ณ€์ˆ˜์— ์ง€์ •๋œ ๋””๋ ‰ํ† ๋ฆฌ์—์„œ ๋ชจ๋“ˆ์„ ์ฐพ์•„.
  3. ํ‘œ์ค€ ๋””๋ ‰ํ† ๋ฆฌ: ๋ชจ๋“ˆ์ด ์•„์ง๋„ ๋ฐœ๊ฒฌ๋˜์ง€ ์•Š์œผ๋ฉด, Python์€ sys.path์— ์ง€์ •๋œ ํ‘œ์ค€ ๋””๋ ‰ํ† ๋ฆฌ์—์„œ ๋ชจ๋“ˆ์„ ์ฐพ์•„.

์˜ˆ์‹œ:


import sys

for path in sys.path:
    print(path)
        

๋กœ์ปฌ ๋ฐ ๊ธ€๋กœ๋ฒŒ ์ž„ํฌํŠธ

๋ชจ๋“ˆ ์ž„ํฌํŠธ๋Š” ๊ธ€๋กœ๋ฒŒ ์ˆ˜์ค€(ํŒŒ์ผ์˜ ์‹œ์ž‘ ๋ถ€๋ถ„)์ด๋‚˜ ๋กœ์ปฌ ์ˆ˜์ค€(ํ•จ์ˆ˜ ๋˜๋Š” ๋ฉ”์†Œ๋“œ ๋‚ด)์—์„œ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์–ด.

๊ธ€๋กœ๋ฒŒ ์ž„ํฌํŠธ

๊ธ€๋กœ๋ฒŒ ์ž„ํฌํŠธ๋Š” ํŒŒ์ผ์˜ ์‹œ์ž‘ ๋ถ€๋ถ„์— ์ˆ˜ํ–‰๋˜์–ด, ํŒŒ์ผ ์ „์—ญ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค˜.


import math

def calculate_circle_area(radius):
    return math.pi * radius ** 2
        

๋กœ์ปฌ ์ž„ํฌํŠธ

๋กœ์ปฌ ์ž„ํฌํŠธ๋Š” ํ•จ์ˆ˜๋‚˜ ๋ฉ”์†Œ๋“œ ๋‚ด์—์„œ ์ˆ˜ํ–‰๋˜๋ฉฐ, ํ•ด๋‹น ํ•จ์ˆ˜๋‚˜ ๋ฉ”์†Œ๋“œ์—์„œ๋งŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค˜.


def calculate_square_root(x):
    import math
    return math.sqrt(x)
    
print(calculate_square_root(16))
        

๋กœ์ปฌ ์ž„ํฌํŠธ๋Š” ๋ชจ๋“ˆ ๋กœ๋”ฉ ์‹œ๊ฐ„์„ ์ค„์ด๊ฑฐ๋‚˜ ์ด๋ฆ„ ์ถฉ๋Œ์„ ๋ฐฉ์ง€ํ•˜๋Š” ๋ฐ ์œ ์šฉํ•ด.

1.4 ๋™์  ์ž„ํฌํŠธ

๋™์  ์ž„ํฌํŠธ๋Š” ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰ ์ค‘์— ๋ชจ๋“ˆ์„ ์ž„ํฌํŠธํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค˜. ์ด๋Š” ์‚ฌ์šฉ์ž ์ž…๋ ฅ์ด๋‚˜ ๋‹ค๋ฅธ ๋™์  ์กฐ๊ฑด์— ๋”ฐ๋ผ ๋ชจ๋“ˆ์„ ์ž„ํฌํŠธํ•ด์•ผ ํ•  ๋•Œ ์œ ์šฉํ•ด.

์ด ์ž‘์—…์˜ ์ผ๋ฐ˜์ ์ธ ๋ฌธ๋ฒ•์€ ๋‹ค์Œ๊ณผ ๊ฐ™์•„:


module = __import__("๋ชจ๋“ˆ")

์˜ˆ์ œ๋กœ math ๋ชจ๋“ˆ์„ ์ด ๋ฐฉ๋ฒ•์œผ๋กœ ์ž„ํฌํŠธํ•ด๋ณด์ž.


module_name = "math"
module = __import__(module_name)
print(module.sqrt(16))  # ์ถœ๋ ฅ: 4.0

๊ทธ ์ดํ›„์˜ ์ฝ”๋“œ๋Š” import as๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ๊ณผ ๋น„์Šทํ•˜๊ฒŒ, ๋ชจ๋“ˆ math์— ๋ณ„์นญ module์„ ์ง€์ •ํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋‹ค๋ฃฐ ์ˆ˜ ์žˆ์–ด.

1.5 getattr ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ชจ๋“ˆ ์†์„ฑ์— ์ ‘๊ทผํ•˜๊ธฐ

getattr ํ•จ์ˆ˜๋Š” ๋ชจ๋“ˆ(๋˜๋Š” ์–ด๋–ค ๊ฐ์ฒด)์—์„œ ์†์„ฑ์„ ๋™์ ์œผ๋กœ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค˜. ์ด๋Š” ์†์„ฑ ์ด๋ฆ„์ด ๋ฏธ๋ฆฌ ์•Œ๋ ค์ง€์ง€ ์•Š๊ฑฐ๋‚˜ ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰ ์ค‘์— ๋ณ€๊ฒฝ๋  ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ์— ์œ ์šฉํ•ด.

getattr ํ•จ์ˆ˜์˜ ๋ฌธ๋ฒ•:


getattr(object, name, default = None)

์—ฌ๊ธฐ์„œ object๋Š” ์†์„ฑ์„ ๊ฐ€์ ธ์˜ฌ ๊ฐ์ฒด, name์€ ์†์„ฑ ์ด๋ฆ„์„ ํฌํ•จํ•˜๋Š” ๋ฌธ์ž์—ด, default๋Š” ์ง€์ •๋œ ์ด๋ฆ„์˜ ์†์„ฑ์ด ์กด์žฌํ•˜์ง€ ์•Š์„ ๋•Œ ๋ฐ˜ํ™˜๋˜๋Š” ๊ฐ’์ด์•ผ. default ๋งค๊ฐœ๋ณ€์ˆ˜์˜ ๊ธฐ๋ณธ๊ฐ’์€ None์ด์•ผ.

getattr ํ•จ์ˆ˜์˜ ์‚ฌ์šฉ ์˜ˆ:


import math

# math ๋ชจ๋“ˆ์—์„œ sqrt ์†์„ฑ์„ ๊ฐ€์ ธ์˜ค๊ธฐ
sqrt_function = getattr(math, 'sqrt')

print(sqrt_function(25))  # ์ถœ๋ ฅ: 5.0

# ์กด์žฌํ•˜์ง€ ์•Š๋Š” ์†์„ฑ์„ ๊ฐ€์ ธ์˜ค๋ ค๊ณ  ์‹œ๋„, ๊ธฐ๋ณธ๊ฐ’ ๋ฐ˜ํ™˜
non_existent_attr = getattr(math, 'non_existent', 'default_value')

print(non_existent_attr)  # ์ถœ๋ ฅ: default_value
        

์ด ์˜ˆ์—์„œ ์šฐ๋ฆฌ๋Š” getattr ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ math ๋ชจ๋“ˆ์—์„œ sqrt ํ•จ์ˆ˜๋ฅผ ๊ฐ€์ ธ์˜ค๊ณ , ์ˆซ์ž 25์˜ ์ œ๊ณฑ๊ทผ์„ ๊ณ„์‚ฐํ•˜๊ธฐ ์œ„ํ•ด ์ด ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•ด. ์ง€์ •๋œ ์ด๋ฆ„์˜ ์†์„ฑ์ด ์กด์žฌํ•˜์ง€ ์•Š์„ ๊ฒฝ์šฐ, ๊ธฐ๋ณธ๊ฐ’ default_value๊ฐ€ ๋ฐ˜ํ™˜๋ผ.

์ฝ”๋ฉ˜ํŠธ
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION