๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Study/CODE 3๊ธฐ [Jump to python]

[5์กฐ C5DE] Python Study #4

by ๊น€์„ธ์–ธ 2024. 4. 1.

๐Ÿ’™ ํŒ€์›: ๊น€์„ธ์–ธ ๋ฐ•์ค€ํ˜„ ๋ฐ•์ง€ํ˜ธ ์†Œ์ •์ธ ์ธ์‹œํ™˜

 

์ž‘์„ฑ์ž : ๊น€์„ธ์–ธ 

์ž‘์„ฑ์ผ : 240401

๋ฒ”์œ„ : ํด๋ž˜์Šค

 

05-1 ํด๋ž˜์Šค

 

1. ํด๋ž˜์Šค์™€ ๊ฐ์ฒด

 

๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ์œ„ํ•ด ํ•„์š”ํ•œ ๊ฐœ๋…!

ํด๋ž˜์Šค๋Š” ๊ฐ์ฒด๋ฅผ ์ฐ์–ด๋‚ด๋Š” ํ‹€๋กœ, ํ‹€๋งˆ๋‹ค ๊ณ ์œ ํ•œ ํŠน์„ฑ๋“ค์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.

์ด ํ‹€๋กœ ์ฐ์–ด๋‚ธ ๊ฐ์ฒด๋„ ๊ฐ์ฒด๋งˆ๋‹ค ๊ณ ์œ ํ•œ ํŠน์„ฑ์„ ๊ฐ€์ง€๊ณ , ๊ฐ์ฒด๋ผ๋ฆฌ๋Š” ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š๋Š”๋‹ค.

 

 

 

 

https://cremazer.github.io/java/java-Class-and-Object/

 

https://datamoney.tistory.com/177

 

๊ฐ์ฒด๋งˆ๋‹ค ๊ณ ์œ ํ•œ ํŠน์„ฑ์„ ๊ฐ€์ง!

๊ธฐ๋ณธ์ ์œผ๋กœ ๊ณต์œ ํ•˜๋Š” ๋‚ด์šฉ์€ ๋™์ผ.

 

2. ํŒŒ์ด์ฌ ํด๋ž˜์Šค ๊ธฐ๋ณธ ์‚ฌ์šฉ๋ฒ•

1) ํด๋ž˜์Šค์™€ ๋ฉ”์„œ๋“œ ๋งŒ๋“ค๊ธฐ

 

class ํด๋ž˜์Šค๋ช…:

    [์ฝ”๋“œ]

์ด ํด๋ž˜์Šค๋กœ ์ƒ์„ฑ๋œ ๊ฐ์ฒด๋Š” [์ฝ”๋“œ]์˜ ๋‚ด์šฉ์„ ์‹คํ–‰ํ•œ๋‹ค.

.

class ํด๋ž˜์Šค๋ช…:

    def ๋ฉ”์„œ๋“œ๋ช…(self, ...):

        [๋ฉ”์„œ๋“œ ์ฝ”๋“œ]

ํด๋ž˜์Šค ์•ˆ์— ๊ตฌํ˜„๋œ ํ•จ์ˆ˜๋Š” ๋‹ค๋ฅธ ๋ง๋กœ ๋ฉ”์„œ๋“œ(method)๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค.

์ด ํด๋ž˜์Šค๋Š” ์—ฌ๋Ÿฌ๊ฐ€์ง€ ๊ฐ’์„ ๋ฐ›์•„ [๋ฉ”์„œ๋“œ ์ฝ”๋“œ]์˜ ๊ธฐ๋Šฅ์„ ์‹คํ–‰ํ•œ๋‹ค.

๊ด„ํ˜ธ ์•ˆ์—๋Š” ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ํ•ญ์ƒ self๋ฅผ ํฌํ•จํ•˜๋Š”๋ฐ, ์ด๋Š” ์ž๊ธฐ ์ž์‹ , ๊ทธ๋Ÿฌ๋‹ˆ๊นŒ ๊ฐ์ฒด๋ฅผ ์˜๋ฏธํ•œ๋‹ค.

์ด ๋ฉ”์„œ๋“œ๋Š” ์ด ํ‹€์— ๋‚ด๊ฐ€ ๋„ฃ๊ณ  ์‹ถ์€ ๊ธฐ๋Šฅ์˜ ์ˆ˜๋งŒํผ ์—ฌ๋Ÿฌ๊ฐœ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

2) ๋ฉ”์„œ๋“œ์˜ ํ•œ ์ข…๋ฅ˜์ธ ์ƒ์„ฑ์ž ์ดํ•ดํ•˜๊ธฐ

 

์ƒ์„ฑ์ž(constructor)๋ž€ ๊ฐ์ฒด๊ฐ€ ์ƒ์„ฑ๋  ๋•Œ ์ž๋™์œผ๋กœ ํ˜ธ์ถœ๋˜๋Š” ๋ฉ”์„œ๋“œ๋ฅผ ์˜๋ฏธํ•œ๋‹ค.

ํŒŒ์ด์ฌ ๋ฉ”์„œ๋“œ๋ช…์œผ๋กœ __init__๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ด ๋ฉ”์„œ๋“œ๋Š” ์ƒ์„ฑ์ž๊ฐ€ ๋œ๋‹ค.

๋ฉ”์„œ๋“œ ์ด๋ฆ„์„ __init__๋กœ ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ƒ์„ฑ์ž๋กœ ์ธ์‹๋˜์–ด ๊ฐ์ฒด๊ฐ€ ์ƒ์„ฑ๋˜๋Š” ์‹œ์ ์— ์ž๋™์œผ๋กœ ํ˜ธ์ถœ๋œ๋‹ค๋Š” ์ฐจ์ด๊ฐ€ ์žˆ๋‹ค.

 

class ํด๋ž˜์Šค๋ช…:

    def __init__(self, ...):

        [๋ฉ”์„œ๋“œ ์ฝ”๋“œ]

3) ์ƒ์†์˜ ๊ฐœ๋… ์ดํ•ดํ•˜๊ธฐ

 ์–ด๋–ค ํด๋ž˜์Šค๋ฅผ ๋งŒ๋“ค ๋•Œ ๋‹ค๋ฅธ ํด๋ž˜์Šค์˜ ๊ธฐ๋Šฅ์„ ๋ฌผ๋ ค๋ฐ›์„ ์ˆ˜ ์žˆ๊ฒŒ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด ์ƒ์†์ด๋‹ค. ๋ณดํ†ต ์ƒ์†์€ ๊ธฐ์กด ํด๋ž˜์Šค๋ฅผ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š๊ณ  ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ๊ธฐ์กด ๊ธฐ๋Šฅ์„ ๋ณ€๊ฒฝํ•˜๋ ค๊ณ  ํ•  ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค. 

class ํด๋ž˜์Šค๋ช… (์ƒ์†ํ•  ํด๋ž˜์Šค ์ด๋ฆ„)

 

4) ํด๋ž˜์Šค ๋ณ€์ˆ˜์˜ ๊ฐœ๋… ์ดํ•ดํ•˜๊ธฐ

 

 ํด๋ž˜์Šค๋ณ€์ˆ˜๋Š” ํด๋ž˜์Šค ์•ˆ์— ํ•จ์ˆ˜๋ฅผ ์„ ์–ธํ•˜๋Š” ๊ฒƒ๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ํด๋ž˜์Šค ์•ˆ์— ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธํ•˜์—ฌ ์ƒ์„ฑํ•œ๋‹ค.

class ํด๋ž˜์Šค๋ช…:

    ํด๋ž˜์Šค ๋ณ€์ˆ˜๋ช… = ๊ฐ’

 

print(ํด๋ž˜์Šค.ํด๋ž˜์Šค ๋ณ€์ˆ˜)

>> ๊ฐ’

 

+ ํด๋ž˜์Šค ๋ณ€์ˆ˜ / ๊ฐ์ฒด ๋ณ€์ˆ˜ ์ดํ•ดํ•˜

(1) ์ธ์Šคํ„ด์Šค ๋ณ€์ˆ˜(Instance variable)

- ํด๋ž˜์Šค์—์„œ ์ •์˜๋œ ๋ณ€์ˆ˜๋กœ ์ด๋ฅผ ์œ„ํ•ด ๊ฐ๊ฐ ์ธ์Šคํ„ด์Šคํ™”๋œ ํด๋ž˜์Šค์˜ ๊ฐ์ฒด๋“ค์˜ ๊ฐœ๋ณ„์ ์ธ ์ €์žฅ ๊ณต๊ฐ„

- ๊ฐ ์ธ์Šคํ„ด์Šค๋งˆ๋‹ค ๋‹ค๋ฅธ ๊ฐ’์„ ์ €์žฅ

(2) ํด๋ž˜์Šค ๋ณ€์ˆ˜(Class variable)

- ๋™์ผํ•œ ํด๋ž˜์Šค์˜ ๋ชจ๋“  ์ธ์Šคํ„ด์Šค๋“ค์ด ๊ณต์œ ํ•˜๋Š” ๋ณ€์ˆ˜ (๋ชจ๋“  ์ธ์Šคํ„ด์Šค๊ฐ€ ๊ณตํ†ต๋œ ๊ฐ’์„ ๊ณต์œ )

๋”ฐ๋ผ์„œ, ์ƒ์„ฑ๋œ ๊ฐ ๊ฐ์ฒด(์ธ์Šคํ„ด์Šค)๋“ค์ด ๊ณตํ†ต์ ์ธ ๊ฐ’์„ ๊ฐ€์ ธ์•ผ ํ•  ๋•Œ ํด๋ž˜์Šค ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธ

- ์ธ์Šคํ„ด์Šค ์ƒ์„ฑ ์—†์ด, "ํด๋ž˜์Šค๋ช….ํด๋ž˜์Šค ๋ณ€์ˆ˜๋ช…"์œผ๋กœ ์ ‘๊ทผ ๊ฐ€๋Šฅํ•˜๋‹ค.

 

5) ๊ฐ์ฒด ๋งŒ๋“ค๊ธฐ / ์˜ˆ์‹œ

 

.
์ž‘์„ฑ์ž : ๋ฐ•์ค€ํ˜„
์ž‘์„ฑ์ผ : 24/04/01
์ง„๋„ : [5-2, 3]

 

[5-2 ๋ชจ๋“ˆ]

๋ชจ๋“ˆ์ด๋ž€?

 

๋ชจ๋“ˆ์ด๋ž€, ์šฐ๋ฆฌ๊ฐ€ ๋งŒ๋“œ๋Š” ๊ฐ๊ฐ์˜ '.py' ํŒŒ์ผ์„ ์˜๋ฏธํ•œ๋‹ค.

๋ชจ๋“ˆ์„ ๋ถˆ๋Ÿฌ์˜ด์œผ๋กœ์จ ์šฐ๋ฆฌ๋Š” ๊ฐ ํŒŒ์ผ ์•ˆ์— ๋“ค์–ด์žˆ๋Š” ํ•จ์ˆ˜๋‚˜ ํด๋ž˜์Šค, ๋ณ€์ˆ˜ ๋“ฑ์„ ์žฌํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค ! 

์ด๋ฅผ ํ†ตํ•ด ์šฐ๋ฆฌ๋Š” ๋” ํ’์„ฑํ•˜๊ฒŒ ์ฝ”๋“œ๋ฅผ ์งค ์ˆ˜ ์žˆ๊ณ , ํ˜‘๋ ฅํ•ด์„œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ํ•˜๋Š” ๊ฒƒ๋„ ๊ฐ€๋Šฅํ•˜๋‹ค.

 

๊ทธ๋ ‡๋‹ค๋ฉด ์–ด๋–ป๊ฒŒ ๋ชจ๋“ˆ์„ ์ €์žฅํ•˜๊ณ , ๋ชจ๋“ˆ์„ ๋ถˆ๋Ÿฌ์˜ฌ ์ˆ˜ ์žˆ์„๊นŒ?

 

 

๋ชจ๋“ˆ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ ์„ธํŒ…๊ณผ์ •

 

๋ชจ๋“ˆ์„ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ ์œ„ํ•ด, ์šฐ์„  ์šฐ๋ฆฌ๋Š” ๊ฐ„๋‹จํ•œ ๋ชจ๋“ˆ์„ ๋งŒ๋“ค์–ด ๋ณผ ๊ฒƒ์ด๋‹ค.

๊ฐ„๋‹จํ•œ addํ•จ์ˆ˜์™€ subํ•จ์ˆ˜๋ฅผ ๋งŒ๋“ค์–ด๋ณด์ž.

์ฃผ์˜ ! : ์ด๋•Œ ํŒŒ์ผ์€ IDLE์—๋””ํ„ฐ๋ฅผ ํ†ตํ•ด .py๋กœ ์ €์žฅํ•  ๊ฒƒ์ด๋‹ค. ๊ตฌ๊ธ€ ์ฝ”๋žฉ์„ ์ด์šฉํ•œ .ipnynbํŒŒ์ผ์€ ๋ชจ๋“ˆ์ด ๋  ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. (ํ•˜์ง€๋งŒ ์ด๋ฏธ ๋งŒ๋“ค์–ด์ง„ .py๋ชจ๋“ˆ์€ ์ฝ”๋žฉ์œผ๋กœ ๋ถˆ๋Ÿฌ์˜ฌ ์ˆ˜ ์žˆ๋‹ค.)

 

IDLE์—๋””ํ„ฐ๋ฅผ ํ‚ค๊ณ  ํ•จ์ˆ˜๋ฅผ ์ •์˜ํ•ด์ฃผ์ž.

#mod1
def add(a, b):
	return a + b
    
def sub(a, b):
	return a - b

์ด๋ฅผ ๋‚ด๊ฐ€ ๋งŒ๋“ค์–ด ๋†“์€ ๊ฒฝ๋กœ์ธ C:\PythonStudy(C๋“œ๋ผ์ด๋ธŒ ์•ˆ์— ์žˆ๋Š” PythonStudy ํด๋”) ์— mod1.py๋กœ ์ €์žฅํ•ด์ฃผ์ž.

 

์ด์ œ ๋ชจ๋“ˆ์„ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ ์œ„ํ•ด, ์ปดํ“จํ„ฐ ๋‚ด์— ๋‚ด์žฅ๋˜์–ด ์žˆ๋Š” ๋ช…๋ น ํ”„๋กฌํ”„ํŠธ ์ฐฝ์„ ์—ด์–ด์ฃผ์ž.

 

 

๊ทธ๋ฆฌ๊ณ , ์šฐ๋ฆฌ๊ฐ€ ์•ž์„œ ๋งŒ๋“  ๋ชจ๋“ˆ์„ ์ €์žฅํ•œ ํŒŒ์ผ๋กœ ์ด๋™ํ•ด์ค€ ํ›„

 

 

python๋ช…๋ น์–ด๋ฅผ ์ณ์„œ ๋ช…๋ นํ˜• ํ”„๋กฌํ”„ํŠธ ๋‚ด์—์„œ python์„ ์‹คํ–‰ํ•ด์ฃผ์ž.

 

์œ„ ๊ณผ์ •์„ ๋ชจ๋‘ ๊ฑฐ์ณค๋‹ค๋ฉด, ๋ชจ๋“ˆ์„ ๋ถˆ๋Ÿฌ์˜ฌ ํŒŒ์ผ ๋‚ด์—์„œ python์„ ์‹คํ–‰ํ•œ ํ™˜๊ฒฝ์ด ๋งŒ๋“ค์–ด์ง„๋‹ค.

 

 

๋ชจ๋“ˆ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ

 

์ด์ œ ๋ณธ๊ฒฉ์ ์œผ๋กœ ๋ชจ๋“ˆ์„ ๋ถˆ๋Ÿฌ์™€๋ณด์ž.

๊ทธ ์ „์— ์šฐ๋ฆฌ๋Š” import๋ผ๋Š” ๋ช…๋ น์–ด์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด์•„์•ผ ํ•œ๋‹ค.

import : ํ˜„์žฌ ๋””๋ ‰ํ† ๋ฆฌ์— ์žˆ๋Š” ํŒŒ์ผ์ด๋‚˜, ํŒŒ์ด์ฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ(๋‚ด์žฅํ˜•)์— ์ €์žฅ๋œ ๋ชจ๋“ˆ์„ ๋ถˆ๋Ÿฌ์˜ฌ ์ˆ˜ ์žˆ๋Š” ๋ช…๋ น์–ด

 

์šฐ๋ฆฌ๋Š” ์•ž์„  ๊ณผ์ •์—์„œ ๋ฏธ๋ฆฌ ๋ถˆ๋Ÿฌ์˜ฌ ๋ชจ๋“ˆ์ด ์žˆ๋Š” ๋””๋ ‰ํ† ๋ฆฌ์— ์ ‘์†ํ•œ ์ƒํƒœ์ด๊ธฐ์— import๋ฅผ ํ†ตํ•ด ๋ชจ๋“ˆ์„ ๋ถˆ๋Ÿฌ์˜ฌ ์ˆ˜ ์žˆ๋‹ค!

 

>>> import mod1
>>> print(mod1.add(5, 9))
14

import๋Š” ๋ชจ๋“ˆ ๊ทธ ์ž์ฒด๋ฅผ ๋ถˆ๋Ÿฌ์˜จ๋‹ค. 

๋”ฐ๋ผ์„œ ์šฐ๋ฆฌ๋Š” ๋ฏธ๋ฆฌ ์ €์žฅํ•œ mod1๋ชจ๋“ˆ ๋‚ด์— ์žˆ๋Š” ์šฐ๋ฆฌ๊ฐ€ ์ •์˜ํ•œ addํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜์—ˆ๋‹ค.

 

์ด๋•Œ mod1.add()์ฒ˜๋Ÿผ mod1.๋ฅผ ๋ถ™์ด๋Š” ๊ฒƒ์ด ๋ฒˆ๊ฑฐ๋กญ๋‹ค๋ฉด, ์ด๋ฒˆ์—๋Š” mod1 ๋ชจ๋“ˆ ๋‚ด์— ์žˆ๋Š” addํ•จ์ˆ˜ ์ž์ฒด๋ฅผ ๋ถˆ๋Ÿฌ์™€๋ณด์ž.

 

>>> from mod1 import add, sub
>>> print(add(3, 5))
8

>>> print(sub(5, 3))
2

import๋ฅผ ํ†ตํ•ด ํ•จ์ˆ˜ ์ž์ฒด๋ฅผ ๋ถˆ๋Ÿฌ์˜จ๋‹ค๋ฉด, ๋ฒˆ๊ฑฐ๋กญ๊ฒŒ mod1.์„ ๋ถ™์—ฌ์ฃผ์ง€ ์•Š์•„๋„ ๋œ๋‹ค.

 

 

๋ชจ๋“ˆ์„ ํ†ตํ•ด ํด๋ž˜์Šค๋‚˜ ๋ณ€์ˆ˜ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ

 

์•ž์„œ ๋ฐฐ์šด ๋ชจ๋“ˆ์„ ํ†ตํ•ด, ์šฐ๋ฆฌ๋Š” ํ•จ์ˆ˜ ๋ฟ ์•„๋‹ˆ๋ผ ํด๋ž˜์Šค์™€ ๋ณ€์ˆ˜ ๋˜ํ•œ ๋ถˆ๋Ÿฌ์˜ฌ ์ˆ˜ ์žˆ๋‹ค.

#mod2
PI = 3.141592

class Math:
	def solv(self, r):
    		return 2 * PI * r

def add(a, b):
	return a + b

์œ„๋Š” ๋ฐ˜์ง€๋ฆ„(r)์ด ์ฃผ์–ด์กŒ์„ ๋•Œ, ์›์˜ ์›์ฃผ๋ฅผ ๊ตฌํ•˜๋Š” ํด๋ž˜์Šค์ด๋‹ค. ์ด๋ฅผ mod2 ๋ผ๋Š” ์ด๋ฆ„์œผ๋กœ C:\PythonStudy ์— ์ €์žฅํ•ด์ฃผ์ž.

 

์œ„์™€ ๋˜‘๊ฐ™์€ ๋ฐฉ๋ฒ•์œผ๋กœ ํด๋ž˜์Šค๋ฅผ ๋ถˆ๋Ÿฌ์™€์ฃผ์ž!

>>> import mod2
>>> a = mod2.Math()
>>> print(a.solv(3))
18.849552000000003

r = 3์ผ๋•Œ ์›์ฃผ๋ฅผ ์•„์ฃผ ํŽธ๋ฆฌํ•˜๊ฒŒ ๊ตฌํ•  ์ˆ˜ ์žˆ๋‹ค.

 

 

๋‹ค๋ฅธ ๋””๋ ‰ํ† ๋ฆฌ์— ์žˆ๋Š” ๋ชจ๋“ˆ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ

 

์ง€๊ธˆ๊นŒ์ง€๋Š” ๋ชจ๋‘ ๊ฐ™์€ ๋””๋ ‰ํ† ๋ฆฌ์— ์žˆ๋Š” ๋ชจ๋“ˆ์„ ๋ถˆ๋Ÿฌ์™€ ๋ณด์•˜๋‹ค. ํ•˜์ง€๋งŒ, ๋‹ค๋ฅธ ๋””๋ ‰ํ† ๋ฆฌ์— ์žˆ๋Š” ํŒŒ์ผ์„ ๋ถˆ๋Ÿฌ์˜ค๊ณ  ์‹ถ์„ ๋•Œ๋Š” ์–ด๋–ป๊ฒŒ ํ•ด์•ผํ• ๊นŒ?

์šฐ๋ฆฌ๋Š” PYTHONPATH ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

๋‹ค์Œ ์˜ˆ์‹œ๋ฅผ ์‚ดํŽด๋ณด์ž.

 

์šฐ์„  PythonStudy ๋””๋ ‰ํ† ๋ฆฌ ์•ˆ์— etcํด๋”๋ฅผ ํ•˜๋‚˜ ๋งŒ๋“ค์–ด ์ค€ ํ›„

์•ž ์„œ ๋งŒ๋“  mod1 ํŒŒ์ผ์„ etcํด๋”๋กœ ์˜ฎ๊ฒจ์ค€๋‹ค.

 

๊ทธ ํ›„ ๋ช…๋ น ํ”„๋กฌํฌํŠธ์—์„œ

 

 

๋‹ค์Œ๊ณผ ๊ฐ™์ด ์‹คํ–‰ํ•ด์ค€๋‹ค.

 

์ด์ œ ๋‹ค๋ฅธ ๋””๋ ‰ํ† ๋ฆฌ์— ์žˆ๋Š” ํŒŒ์ผ๋„ ์‹คํ–‰ ๊ฐ€๋Šฅํ•˜๋‹ค!


๋ชจ๋“ˆ์ด๋ผ๋Š” ์‹œ์Šคํ…œ์„ ํ™œ์šฉํ•˜๋ฉด, ํ›จ์”ฌ ๋‹ค์ฑ„๋กœ์šด ์ฝ”๋”ฉ์ด ๊ฐ€๋Šฅํ•  ๊ฒƒ ๊ฐ™๋‹ค. ํ•˜์ง€๋งŒ ์šฐ๋ฆฌ๊ฐ€ ์ž์ฃผ ์“ฐ๋Š” ๊ตฌ๊ธ€ ์ฝ”๋žฉ์„ ํ†ตํ•ด์„œ๋Š” ์ ์šฉ์ด ์–ด๋ ค์›Œ์„œ ๊ตฌ๊ธ€ ์ฝ”๋žฉ์—์„œ ipnyb์„ ํ†ตํ•ด์„œ ๋ชจ๋“ˆ์„ ๋กœ๋“œํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋” ์•Œ์•„๋ณด์•„์•ผ๊ฒ ๋‹ค.

 

 

 

[5-3 ํŒจํ‚ค์ง€]

ํŒจํ‚ค์ง€๋ž€?

 

ํŒจํ‚ค์ง€๋ž€ ๋””๋ ‰ํ† ๋ฆฌ์™€ ๊ฐ๊ฐ์˜ ๋ชจ๋“ˆ๋กœ ์ด๋ฃจ์–ด์ง„ ํ•˜๋‚˜์˜ ๋‹จ์œ„์ด๋‹ค.

์ฆ‰ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๋ชจ๋“ˆ๋“ค์ด ๋””๋ ‰ํ† ๋ฆฌ๋ผ๋Š” ์งˆ์„œ์— ๋”ฐ๋ผ ์ •๋ ฌ๋œ ๊ฒƒ์ด ํŒจํ‚ค์ง€์ด๋‹ค.

 

 

ํŒจํ‚ค์ง€๋ฅผ ์ง์ ‘ ๋งŒ๋“ค์–ด๋ณด์ž

 

์•ž ์„œ ๋ชจ๋“ˆ๋•Œ ๋งŒ๋“  ํŒŒ์ผ ๋ง๊ณ  C๋“œ๋ผ์ด๋ธŒ์— ์ƒˆ๋กœ์šด ํŒŒ์ผ์„ ๋งŒ๋“ค์–ด๋ณด์ž.

 

C:\game

    \game\__init__.py

    \game\character

    \game\character\__init__.py

    \game\item

    \game\item\ __init__.py

    \game\map

    \game\map\ __init__.py

๊ผด๋กœ ํŒŒ์ผ์„ ๋งŒ๋“ค์–ด์ฃผ์ž.

(์ด๋•Œ __init__.py๋Š” ์ผ๋‹จ ๋น„์›Œ๋‘๊ณ  ์ƒ์„ฑํ•˜์ž)

 

์ด๋ ‡๊ฒŒ ๋งŒ๋“  ๊ฐ๊ฐ์˜ ํŒŒ์ผ์ด ํŒจํ‚ค์ง€์˜ ์งˆ์„œ์ธ '๋””๋ ‰ํ† ๋ฆฌ'์ด๋‹ค.

์ด์ œ ๋ณธ๊ฒฉ์ ์œผ๋กœ ํŒจํ‚ค์ง€์•ˆ์— ๋ชจ๋“ˆ์„ ๋งŒ๋“ค์–ด๋ณด์ž.

 

 

ํŒจํ‚ค์ง€ ์ ์šฉํ•˜๊ธฐ

 

๋ฏธ๋ฆฌ ๋งŒ๋“ค์–ด๋‘” character๋””๋ ‰ํ† ๋ฆฌ ์•ˆ์— ์ƒˆ๋กœ์šด ๋ชจ๋“ˆ์„ ๋งŒ๋“ค์–ด๋ณด์ž.

#model.py

def model_test():
	print('model')

์œ„์™€ ๊ฐ™์€ ์ฝ”๋“œ๋ฅผ model.py๋ผ๋Š” ์ด๋ฆ„์œผ๋กœ character๋””๋ ‰ํ† ๋ฆฌ์— ์ €์žฅํ•ด์ฃผ์ž.

์ด์ œ ์ƒ์„ฑ๋œ ๋ชจ๋“ˆ์„ ๋ถˆ๋Ÿฌ์™€๋ณด์ž.

๊ทธ ์ „์— ๊ฐ๊ฐ์˜ ๋””๋ ‰ํ† ๋ฆฌ์— ์žˆ๋Š” ๋ชจ๋“ˆ๋“ค์„ ์ž์œ ๋กญ๊ฒŒ ์ฐธ์กฐํ•˜๊ธฐ ์œ„ํ•ด PYTHONPATH ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ฅผ ์ถ”๊ฐ€ํ•ด์ฃผ์ž.

 

C:\> set PYTHONPATH=C:/game
C:\> python
>>>

 ์ด์ œ ๊ฐ ๋””๋ ‰ํ† ๋ฆฌ์— ์žˆ๋Š” ๋ชจ๋“ˆ๋“ค์„ importํ•˜์ž.

 

>>> import game.character.model
>>> print(game.character.model.model_test())
model

์•ž์„œ ๋ฐฐ์šด ๋ฐฉ๋ฒ•์œผ๋กœ ํ•จ์ˆ˜ ์ž์ฒด๋ฅผ ๋ถˆ๋Ÿฌ์˜ฌ ์ˆ˜๋„ ์žˆ๋‹ค.

 

>>> from game.character.model import model_test
>>> print(model_test())
model

 

 

relative ํŒจํ‚ค์ง€

 

์ด์   item๋””๋ ‰ํ† ๋ฆฌ์— food.py๋ฅผ ๋งŒ๋“ค์–ด๋ณด์ž.

#food.py
def food_test():
	print('food')

 

์ด๋•Œ food.py์•ˆ์—์„œ ์•ž์—์„œ ์šฐ๋ฆฌ๊ฐ€ ๋งŒ๋“  ๋‹ค๋ฅธ ๋””๋ ‰ํ† ๋ฆฌ์— ์กด์žฌํ•˜๋Š” model ๋ชจ๋“ˆ์„ ๋ถˆ๋Ÿฌ์˜ค๊ณ  ์‹ถ๋‹ค๋ฉด, ์šฐ๋ฆฌ๋Š” ๊ฐ„๋‹จํ•˜๊ฒŒ ๋ถˆ๋Ÿฌ์˜ฌ ์ˆ˜ ์žˆ์„ ๊ฒƒ์ด๋‹ค.

 

>>> from game.character import model
>>> print(model.model_test())
model

์ด๋•Œ ์œ„์™€ ๊ฐ™์ด importํ•˜๋Š” ๊ฒƒ๋„ ๊ฐ€๋Šฅํ•˜์ง€๋งŒ, relativeํ•˜๊ฒŒ importํ•  ์ˆ˜๋„ ์žˆ๋‹ค !

 

>>> from ..character import model
>>> print(model.model_test())
model

 

์ด๋•Œ ..์€ ๋ถ€๋ชจ ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ ์˜๋ฏธํ•˜๊ณ , .์€ ํ˜„์žฌ ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ์˜๋ฏธํ•œ๋‹ค.

(food.py ์˜ ํ˜„์žฌ ๋””๋ ‰ํ† ๋ฆฌ๋Š” item์ด๊ณ , ๋ถ€๋ชจ ๋””๋ ‰ํ† ๋ฆฌ๋Š” game์ด๋‹ค.)

 


ํŒŒ์ด์ฌ์˜ ๊ธฐ์ดˆ๋Š” ์ž๋ฃŒํ˜•์ด๊ณ , ์ œ๋Œ€๋กœ ๋œ ํ”„๋กœ๊ทธ๋žจ์„ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด์„œ ์•Œ์•„์•ผํ•˜๋Š”๊ฒƒ์€ ํ•จ์ˆ˜๋ผ๊ณ  ์ƒ๊ฐํ•œ๋‹ค.

ํ•˜์ง€๋งŒ ๋ง ๊ทธ๋Œ€๋กœ ํŒŒ์ด์ฌ์„ ๋” ํšจ์œจ์ ์œผ๋กœ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด์„œ๋Š” ํด๋ž˜์Šค์™€ ๋ชจ๋“ˆ์—๋Œ€ํ•œ ์ดํ•ด๊ฐ€ ํ•„์ˆ˜์ ์ด๋ผ๊ณ  ์ƒ๊ฐํ•œ๋‹ค.

ํด๋ž˜์Šค, ํŒจํ‚ค์ง€, ๋ชจ๋“ˆ๋„ ๊ณต๋ถ€๋ฅผ ์†Œํ™€ํžˆ ํ•˜๋ฉด ์•ˆ๋  ๊ฒƒ ๊ฐ™๋‹ค.


  • ์ž‘์„ฑ์ž : ์ธ์‹œํ™˜
  • ์ง„๋„ : 05 - 5 ๋‚ด์žฅ ํ•จ์ˆ˜

 

์ง€๊ธˆ๊นŒ์ง€ import๋ฅผ ํ†ตํ•ด ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ํŒŒ์ด์ฌ ๋ชจ๋“ˆ์„ ๋ฐฐ์› ๋‹ค. ์ด๋ฒˆ ๋‹จ์›์—์„œ๋Š” import๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ ๋„ ํŒŒ์ด์ฌ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋‚ด์žฅ ํ•จ์ˆ˜๋ฅผ ์•Œ์•„๋ณด๊ณ ์ž ํ•œ๋‹ค. ๋‚ด์žฅ ํ•จ์ˆ˜๋Š” ์ •๋ง ๋งŽ์€ ์ข…๋ฅ˜๊ฐ€ ์žˆ๋‹ค. ์—ฌ๊ธฐ์„œ๋Š” ์ค‘์š”ํ•œ ํ•จ์ˆ˜ ์œ„์ฃผ๋กœ ์†Œ๊ฐœํ•ด๋ณด๊ณ ์ž ํ•œ๋‹ค. 

abs(x)

abs(x)๋Š” ์–ด๋–ค ์ˆซ์ž๋ฅผ ์ž…๋ ฅ๋ฐ›์•˜์„ ๋•Œ ๊ทธ ์ˆซ์ž์˜ ์ ˆ๋Œ“๊ฐ’์„ ๋ฆฌํ„ดํ•˜๋Š” ํ•จ์ˆ˜์ด๋‹ค.

>>> abs(3)
3
>>> abs(-3)
3
>>> abs(-1.7)
1.7

 

all(x)

all(x)๋Š” ๋ฐ˜๋ณต ๊ฐ€๋Šฅํ•œ ๋ฐ์ดํ„ฐ x๋ฅผ ์ž…๋ ฅ๊ฐ’์œผ๋กœ ๋ฐ›์œผ๋ฉฐ ์ด x์˜ ์š”์†Œ๊ฐ€ ๋ชจ๋‘ ์ฐธ์ด๋ฉด True, ๊ฑฐ์ง“์ด ํ•˜๋‚˜๋ผ๋„ ์žˆ์œผ๋ฉด False๋ฅผ ๋ฆฌํ„ดํ•œ๋‹ค.

โ— ์ž๋ฃŒํ˜•์˜ ์ฐธ๊ณผ ๊ฑฐ์ง“์€ ์•ž ๋‹จ์›์—์„œ ๋‹ค๋ฃฌ ๋ฐ” ์žˆ๋‹ค.

>>> all([1, 2, 3])
True
>>> all([1, 2, 3, 0])
False

 

divmod

divmod๋Š” ์ˆซ์ž ๋‘๊ฐœ๋ฅผ ์ž…๋ ฅ๋ฐ›์•„ ๋ชซ๊ณผ ๋‚˜๋จธ์ง€๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ํ•จ์ˆ˜์ด๋‹ค. 

(๋ชซ, ๋‚˜๋จธ์ง€) ํ˜•ํƒœ๋กœ ๋ฐ˜ํ™˜๋œ๋‹ค.

>>> divmod(8, 3)
(2, 2)

 

enumerate

enumerate๋Š” '์—ด๊ฑฐํ•˜๋‹ค' ๋ผ๋Š” ๋œป์œผ๋กœ ๋ฆฌ์ŠคํŠธ ๋“ฑ์˜ ์ˆœ์„œ๊ฐ€ ์žˆ๋Š” ์ž๋ฃŒํ˜•์„ ์ธ๋ฑ์Šค์™€ ํ•จ๊ป˜ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

>>> for i, name in enumerate(['a', 'b', 'c']):
...     print(i, name)
...
0 a
1 b
2 c

 

id

id๋Š” ๊ฐ์ฒด๋ฅผ ์ž…๋ ฅ๋ฐ›์•„ ๊ฐ์ฒด์˜ ๋ ˆํผ๋Ÿฐ์Šค๋ฅผ ๋ฆฌํ„ดํ•˜๋Š” ํ•จ์ˆ˜์ด๋‹ค.

>>> a = 3
>>> id(3)
135072304
>>> id(a)
135072304
>>> b = a
>>> id(b)
135072304

 

int

int๋Š” ๋‹ค๋ฅธ ์ž๋ฃŒํ˜•์„ ์ •์ˆ˜ํ˜•์œผ๋กœ ๋ฐ˜ํ™˜ํ•ด์ฃผ๋Š” ํ•จ์ˆ˜์ด๋‹ค.

>>> int('3')
3
>>> int(3.4)
3

 

len

length์˜ ์ค„์ž„๋ง๋กœ ์ž…๋ ฅ๊ฐ’์˜ ๊ธธ์ด๋ฅผ ์„ธ์–ด ๋ฐ˜ํ™˜ํ•˜๋Š” ํ•จ์ˆ˜์ด๋‹ค. 

>>> len("python")
6
>>> len([1,2,3])
3
>>> len((1, 'a'))
2

 

list

๋‹ค๋ฅธ ํ˜•ํƒœ์˜ ์ž๋ฃŒํ˜•์„ ๋ฆฌ์ŠคํŠธ ํ˜•ํƒœ์˜ ์ž๋ฃŒํ˜•์œผ๋กœ ๋งŒ๋“ค์–ด์ฃผ๋Š” ํ•จ์ˆ˜์ด๋‹ค.

>>> list("python")
['p', 'y', 't', 'h', 'o', 'n']
>>> list((1,2,3))
[1, 2, 3]

 

map

map(f, iterable)์€ ํ•จ์ˆ˜(f)์™€ ๋ฐ˜๋ณต ๊ฐ€๋Šฅํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์ž…๋ ฅ์œผ๋กœ ๋ฐ›๋Š”๋‹ค. map์€ ์ž…๋ ฅ๋ฐ›์€ ๋ฐ์ดํ„ฐ์˜ ๊ฐ ์š”์†Œ์— ํ•จ์ˆ˜ f๋ฅผ ์ ์šฉํ•œ ๊ฒฐ๊ณผ๋ฅผ ๋ฆฌํ„ดํ•˜๋Š” ํ•จ์ˆ˜์ด๋‹ค.

>>> def two_times(x): 
...     return x*2
...
>>> list(map(two_times, [1, 2, 3, 4]))
[2, 4, 6, 8]

๋‘ ๋ฐฐ๋ฅผ ํ•ด์ฃผ๋Š” ํ•จ์ˆ˜๋ฅผ ์ •์˜ํ•˜๊ณ , ์ด๋ฅผ map ํ•จ์ˆ˜๋ฅผ ํ†ตํ•ด ๋ฆฌ์ŠคํŠธ์˜ ๊ฐ ๋‚ด์šฉ์— ์ ์šฉ์‹œํ‚จ ๊ฒฐ๊ณผ์ด๋‹ค.

 

open

open(filename, [mode])์€ ‘ํŒŒ์ผ ์ด๋ฆ„’๊ณผ ‘์ฝ๊ธฐ ๋ฐฉ๋ฒ•’์„ ์ž…๋ ฅ๋ฐ›์•„ ํŒŒ์ผ ๊ฐ์ฒด๋ฅผ ๋ฆฌํ„ดํ•˜๋Š” ํ•จ์ˆ˜์ด๋‹ค. ์ฝ๊ธฐ ๋ฐฉ๋ฒ•(mode)์„ ์ƒ๋žตํ•˜๋ฉด ๊ธฐ๋ณธ๊ฐ’์ธ ์ฝ๊ธฐ ๋ชจ๋“œ(r)๋กœ ํŒŒ์ผ ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ค์–ด ๋ฆฌํ„ดํ•œ๋‹ค.

>>> f = open("test_file", "r")

r์€ ์ฝ๊ธฐ ๋ชจ๋“œ, w๋Š” ์“ฐ๊ธฐ ๋ชจ๋“œ, a๋Š” ์ถ”๊ฐ€ ๋ชจ๋“œ, b๋Š” ๋ฐ”์ด๋„ˆ๋ฆฌ ๋ชจ๋“œ์ด๋‹ค. 

 

pow

pow(x, y)๋Š” x๋ฅผ y์ œ๊ณฑํ•œ ๊ฒฐ๊ด๊ฐ’์„ ๋ฆฌํ„ดํ•˜๋Š” ํ•จ์ˆ˜์ด๋‹ค.

>>> pow(2, 5)
32
>>> pow(3, 2)
9

 

sorted

sorted(iterable)๋Š” ์ž…๋ ฅ ๋ฐ์ดํ„ฐ๋ฅผ ์ •๋ ฌํ•œ ํ›„ ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ๋ฆฌ์ŠคํŠธ๋กœ ๋ฆฌํ„ดํ•˜๋Š” ํ•จ์ˆ˜์ด๋‹ค.

>>> sorted([3, 1, 2])
[1, 2, 3]
>>> sorted(['a', 'c', 'b'])
['a', 'b', 'c']
>>> sorted("zero")
['e', 'o', 'r', 'z']
>>> sorted((3, 2, 1))
[1, 2, 3]

 

str

str์€ ๋‹ค๋ฅธ ์ž๋ฃŒํ˜•์€ ๋ฌธ์ž์—ด๋กœ ๋ฐ”๊พธ์–ด์ฃผ๋Š” ํ•จ์ˆ˜์ด๋‹ค. 

>>> str(3)
'3'
>>> str('hi')
'hi'

 

sum

sum์€ ์ž…๋ ฅ๊ฐ’์˜ ํ•ฉ์„ ๋ฐ˜ํ™˜ํ•ด์ฃผ๋Š” ํ•จ์ˆ˜์ด๋‹ค. 

>>> sum([1,2,3])
6
>>> sum((4,5,6))
15

 

type

type๋Š” ์ž…๋ ฅ๊ฐ’์˜ ์ž๋ฃŒํ˜•์„ ๋ฐ˜ํ™˜ํ•ด์ฃผ๋Š” ํ•จ์ˆ˜์ด๋‹ค. 

>>> type("BDA")
<class 'str'>
>>> type([ ])
<class 'list'>

 

zip

zip์€ ๊ฐ™์€ ์ˆ˜๋กœ ์ด๋ฃจ์–ด์ง€๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋ฌถ์–ด์„œ ๋ฐ˜ํ™˜ํ•ด์ฃผ๋Š” ํ•จ์ˆ˜์ด๋‹ค. 

>>> list(zip([1, 2, 3], [4, 5, 6]))
[(1, 4), (2, 5), (3, 6)]
>>> list(zip([1, 2, 3], [4, 5, 6], [7, 8, 9]))
[(1, 4, 7), (2, 5, 8), (3, 6, 9)]
>>> list(zip("123", "456"))
[('1', '4'), ('2', '5'), ('3', '6')]

 

์ž‘์„ฑ์ž: ์†Œ์ •์ธ

์ž‘์„ฑ์ผ: 24/04/01

<05-4. ์˜ˆ์™ธ ์ฒ˜๋ฆฌ>

 

์˜ค๋ฅ˜๋Š” ์–ธ์ œ ๋ฐœ์ƒํ•˜๋Š”๊ฐ€?

-> ์—†๋Š” ํŒŒ์ผ์„ ์—ด๋ ค๊ณ  ์‹œ๋„ํ• ๋•Œ

-> ์–ด๋–ค ์ˆซ์ž๋ฅผ 0์œผ๋กœ ๋‚˜๋ˆŒ ๋•Œ

-> ๋ฆฌ์ŠคํŠธ์— ์กด์žฌํ•˜๋Š” ๊ฐ’์˜ ๊ฐœ์ˆ˜๋ณด๋‹ค ํฐ ๊ฐฏ์ˆ˜์˜ ์š”์†Ÿ๊ฐ’์„ ๊ฐ€๋ฆฌํ‚ฌ ๋•Œ

 

์˜ค๋ฅ˜ ์ฒ˜๋ฆฌ ๋ฐฉ๋ฒ•

 

1. try-except๋ฌธ

try ๋ธ”๋ก ์ˆ˜ํ–‰ ์ค‘ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด except ๋ธ”๋ก์ด ์ˆ˜ํ–‰๋œ๋‹ค. ํ•˜์ง€๋งŒ try ๋ธ”๋ก์—์„œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š๋Š”๋‹ค๋ฉด except ๋ธ”๋ก์€ ์ˆ˜ํ–‰๋˜์ง€ ์•Š๋Š”๋‹ค. 

 

2. try-finally๋ฌธ

cf.์—ฌ๋Ÿฌ๊ฐœ์˜ ์˜ค๋ฅ˜ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•

3. try-else ๋ฌธ

 

์˜ค๋ฅ˜ ํšŒํ”ผํ•˜๊ธฐ

-> ์˜ค๋ฅ˜๋Š” pass ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํšŒํ”ผํ•  ์ˆ˜ ์žˆ๋‹ค

 

์˜ค๋ฅ˜ ์ผ๋ถ€๋Ÿฌ ๋ฐœ์ƒ์‹œํ‚ค๊ธฐ

-> ํŒŒ์ด์ฌ์€ raise ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•ด ์˜ค๋ฅ˜๋ฅผ ๊ฐ•์ œ๋กœ ๋ฐœ์ƒ์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‹ค.

cf. NotImplementedError๋Š” ํŒŒ์ด์ฌ์— ์ด๋ฏธ ์ •์˜๋˜์–ด ์žˆ๋Š” ์˜ค๋ฅ˜๋กœ, ๊ผญ ์ž‘์„ฑํ•ด์•ผ ํ•˜๋Š” ๋ถ€๋ถ„์ด ๊ตฌํ˜„๋˜์ง€ ์•Š์•˜์„ ๊ฒฝ์šฐ ์ผ๋ถ€๋Ÿฌ ์˜ค๋ฅ˜๋ฅผ ๋ฐœ์ƒ์‹œํ‚ค๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•œ๋‹ค. 

 

์˜ˆ์™ธ ๋งŒ๋“ค๊ธฐ

-> ์˜ˆ์™ธ๋Š” ํŒŒ์ด์ฌ ๋‚ด์žฅ ํด๋ž˜์Šค์ธ Exception ํด๋ž˜์Šค๋ฅผ ์ƒ์†ํ•˜์—ฌ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค.

 

 


์ž‘์„ฑ์ž: ๋ฐ•์ง€ํ˜ธ

์ž‘์„ฑ์ผ: 24/04/01

์ง„๋„: 05-6 ํ‘œ์ค€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ

 

[05-6 ํ‘œ์ค€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ]

 

ํ‘œ์ค€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ž€ ?

 

์ „ ์„ธ๊ณ„์˜ ํŒŒ์ด์ฌ ์ด์šฉ์ž๋“ค์ด ๋งŒ๋“  ํ”„๋กœ๊ทธ๋žจ์„ ๋ชจ์•„๋†“์€ ๊ฒƒ

 

 

datetime.date

 

datetime.date ํ•จ์ˆ˜๋Š” ๋‚ ์งœ ํ‘œํ˜„๊ณผ ๊ด€๋ จ๋œ ํ•จ์ˆ˜์ด๋‹ค.

 

1. ๋‘ ๋‚ ์งœ์˜ ์ฐจ์ด ๊ณ„์‚ฐํ•˜๊ธฐ

>>> import datetime
>>> day1 = datetime.date(2023, 5, 9)
>>> day2 = datetime.date(2024, 4, 1)
>>> diff = day2 - day1
>>> diff.days
328

 

๋งŒ์•ฝ 23๋…„ 5์›” 9์ผ์„ ๊ธฐ์ค€์œผ๋กœ ๋ฉฐ์น ์ด ์ง€๋‚ฌ๋Š”์ง€๋ฅผ ์•Œ์•„๋ณด๊ณ  ์‹ถ๋‹ค๋ฉด datetime.date ํ•จ์ˆ˜๋ฅผ ํ†ตํ•ด ๋‘ ๋‚ ์งœ์˜ ์ฐจ์ด๋ฅผ ๊ณ„์‚ฐํ•  ์ˆ˜ ์žˆ๋‹ค.

์œ„ ์˜ˆ์‹œ์—์„œ๋Š” day1์— 2023๋…„ 5์›” 9์ผ์„ ํ• ๋‹นํ•˜๊ณ , ์˜ค๋Š˜ ๋‚ ์งœ๋ฅผ day2์— ํ• ๋‹นํ•œ ํ›„

๋‘ ๋‚ ์งœ์˜ ์ฐจ์ด๋ฅผ diff ๋ณ€์ˆ˜์— ๋Œ€์ž…ํ•ด ๊ณ„์‚ฐํ•œ ๊ฒƒ์ด๋‹ค.

 

2. ์š”์ผ ์•Œ์•„๋‚ด๊ธฐ

>>> day1.weekday()
>>> 1

 

๊ทธ๋ ‡๋‹ค๋ฉด ์ด๋ฒˆ์—๋Š” 23๋…„ 5์›” 9์ผ์˜ ์š”์ผ์„ ํ•œ ๋ฒˆ ์•Œ์•„๋‚ด๋ณด์ž.

์œ„์™€ ๊ฐ™์ด weekday ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์›ํ•˜๋Š” ๋‚ ์งœ์˜ ์š”์ผ์„ ์•Œ์•„๋‚ผ ์ˆ˜ ์žˆ๋‹ค.

์ด๋•Œ 0๋ถ€ํ„ฐ 6๊นŒ์ง€ ์ˆœ์„œ๋Œ€๋กœ ์›”์š”์ผ, ํ™”์š”์ผ, ... ์ด ๋œ๋‹ค.

 

* ๋งŒ์•ฝ, 1๋ถ€ํ„ฐ ์š”์ผ์„ ์„ธ๊ณ  ์‹ถ๋‹ค๋ฉด isoweekday ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค.

 

 

time

 

time ๋ชจ๋“ˆ์—๋Š” ์‹œ๊ฐ„๊ณผ ๊ด€๋ จ๋œ ํ•จ์ˆ˜๋“ค์ด ๋ชจ์—ฌ์žˆ๋‹ค.

 

1. time.time

 

: ํ˜„์žฌ ์‹œ๊ฐ„์„ UTC(ํ˜‘์ • ์„ธ๊ณ„ ํ‘œ์ค€์‹œ)๋ฅผ ์‚ฌ์šฉํ•ด ์‹ค์ˆ˜ ํ˜•ํƒœ๋กœ ๋ฆฌํ„ด

(1970๋…„ 1์›” 1์ผ 0์‹œ 0๋ถ„ 0์ดˆ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์ง€๋‚œ ์‹œ๊ฐ„์„ ์ดˆ ๋‹จ์œ„๋กœ ์•Œ๋ ค์คŒ)

>>> import time
>>> time.time()
1711971649.872514

 

 

2. time.localtime

 

: ์œ„์˜ time.time ํ•จ์ˆ˜๊ฐ€ ๋ฆฌํ„ดํ•œ ๊ฐ’์„ ์—ฐ, ์›”, ์ผ, ์‹œ, ๋ถ„, ์ดˆ ๋“ฑ์˜ ํ˜•ํƒœ๋กœ ๋ฐ”๊ฟ”์คŒ

>>> time.localtime(time.time())
time.struct_time(tm_year=2024, tm_mon=4, tm_mday=1, 
	tm_hour=20, tm_min=43, tm_sec=41, tm_wday=0, tm_yday=92, tm_isdst=0)

 

 

3. time.asctime

 

: ์œ„์˜ time.localtime์˜ ํŠœํ”Œ ๊ฐ’์„ ํ™œ์šฉํ•ด ๋‚ ์งœ์™€ ์‹œ๊ฐ„์„ ์ข€ ๋” ์•Œ๊ธฐ ์‰ฝ๊ฒŒ ๋ฐ”๊ฟ”์คŒ

>>> time.asctime(time.localtime(time.time()))
'Mon Apr  1 20:46:40 2024'

 

 

4. time.ctime

 

: time.asctime(time.localtime(time.time())) = time.ctime

๊ทธ๋Ÿฌ๋‚˜ ctime์€ ํ•ญ์ƒ ํ˜„์žฌ ์‹œ๊ฐ„๋งŒ์„ ๋ฆฌํ„ดํ•จ

>>> time.ctime()
'Mon Apr  1 20:49:26 2024'

 

 

5. time.strftime

 

: ์‹œ๊ฐ„๊ณผ ๊ด€๊ณ„๋œ ์—ฌ๋Ÿฌ ํฌ๋งท ์ฝ”๋“œ ์ œ๊ณต

%a: ์š”์ผ์˜ ์ค„์ž„๋ง
%A: ์š”์ผ
%b: ๋‹ฌ์˜ ์ค„์ž„๋ง
%B: ๋‹ฌ
%c: ๋‚ ์งœ์™€ ์‹œ๊ฐ„
%d: ์ผ
%H: ์‹œ๊ฐ„(24์‹œ๊ฐ„ ํ˜•ํƒœ)
%I: ์‹œ๊ฐ„ (12์‹œ๊ฐ„ ํ˜•ํƒœ)
%j: 1๋…„ ์ค‘ ๋ˆ„์  ๋‚ ์งœ
%m: ๋‹ฌ(์ˆซ์ž๋กœ)
%M: ๋ถ„
%p: AM/PM
%S: ์ดˆ
%U: 1๋…„ ์ค‘ ๋ˆ„์  ์ฃผ(์ผ์š”์ผ ์‹œ์ž‘)
%w: ์ˆซ์ž๋กœ ๋œ ์š”์ผ(0๋ถ€ํ„ฐ ์ผ)
%W: 1๋…„ ์ค‘ ๋ˆ„์  ์ฃผ(์›”์š”์ผ ์‹œ์ž‘)
%x: ํ˜„์žฌ ์„ค์ • ์ง€์—ญ์˜ ๋‚ ์งœ
%X: ํ˜„์žฌ ์„ค์ • ์ง€์—ญ์˜ ์‹œ๊ฐ„
%Y: ์—ฐ๋„
%Z: ์‹œ๊ฐ„๋Œ€
%%: ๋ฌธ์ž %
%y: ์„ธ๊ธฐ ์ œ์™ธ ์—ฐ๋„

 

์œ„์˜ ํฌ๋งท ์ฝ”๋“œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

time.strftime('์›ํ•˜๋Š” ํฌ๋งท ์ฝ”๋“œ', time.localtime(time.time()))

 

 

6. time.sleep

 

: ์ผ์ •ํ•œ ์‹œ๊ฐ„ ๊ฐ„๊ฒฉ์„ ๋‘๊ณ  ๋ฃจํ”„๋ฅผ ์‹คํ–‰ํ•  ๋•Œ ์‚ฌ์šฉ

for i in range(10):
	print(i)
	time.sleep(5)

	
0
1
2
3
4
5
6
7
8
9

 

์œ„ ์˜ˆ์‹œ์—์„œ๋Š” 1๋ถ€ํ„ฐ 9๊นŒ์ง€์˜ ์ˆซ์ž๊ฐ€ 5์ดˆ ๊ฐ„๊ฒฉ์œผ๋กœ ์ถœ๋ ฅ๋œ๋‹ค.

* time.sleep ํ•จ์ˆ˜์˜ ์ธ์ˆ˜๋Š” ์‹ค์ˆ˜ ํ˜•ํƒœ ์‚ฌ์šฉ ๊ฐ€๋Šฅ

 

๐Ÿ˜€ time ํ•จ์ˆ˜๋ฅผ ()์™€ ๊ฐ™์ด ์ž…๋ ฅ ์ธ์ˆ˜ ์—†์ด ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ, ํ˜„์žฌ ์‹œ๊ฐ์„ ๊ธฐ์ค€์œผ๋กœ ํ•จ์ˆ˜๊ฐ€ ์ˆ˜ํ–‰๋จ

 

 

math

 

math ๋ชจ๋“ˆ์—๋Š” ์ตœ๋Œ€ ๊ณต์•ฝ์ˆ˜์™€ ์ตœ์†Œ ๊ณต๋ฐฐ์ˆ˜๋ฅผ ๊ตฌํ•˜๋Š” ํ•จ์ˆ˜๊ฐ€ ๋“ค์–ด์žˆ๋‹ค.

 

1. math.gcd

 

: ์ตœ๋Œ€ ๊ณต์•ฝ์ˆ˜ ๊ตฌํ•˜๊ธฐ

>>> import math
>>> math.gcd(77, 55)
11

 

์œ„์™€ ๊ฐ™์ด ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด 77๊ณผ 55์˜ ์ตœ๋Œ€ ๊ณต์•ฝ์ˆ˜๋ฅผ ๊ตฌํ•  ์ˆ˜ ์žˆ๋‹ค.

 

 

2.  math.lcm

 

: ์ตœ์†Œ ๊ณต๋ฐฐ์ˆ˜ ๊ตฌํ•˜๊ธฐ

>>> math.lcm(77, 55)
385

 

์œ„์™€ ๊ฐ™์€ ํ•จ์ˆ˜๋ฅผ ํ†ตํ•ด ๋‘˜์˜ ์ตœ์†Œ ๊ณต๋ฐฐ์ˆ˜๋„ ๊ตฌํ•  ์ˆ˜ ์žˆ๋‹ค.

 

 

random

 

random ๋ชจ๋“ˆ์€ ๋žœ๋คํ•œ ์ˆ˜๋ฅผ ๋ฐœ์ƒ์‹œํ‚ค๋Š” ํ•จ์ˆ˜๋ฅผ ํฌํ•จํ•˜๊ณ  ์žˆ๋‹ค.

 

1. random.random

 

: 0.0์—์„œ 1.0 ์‚ฌ์ด์˜ ์‹ค์ˆ˜ ์ค‘ ๋žœ๋ค ๊ฐ’ ๋ฆฌํ„ด

>>> import random
>>> random.random()
0.7950837231675663

 

2. random.randint

 

: ์ •ํ•ด์ค€ ๋ฒ”์œ„ ๋‚ด์˜ ์ •์ˆ˜ ์ค‘ ๋žœ๋ค ๊ฐ’ ๋ฆฌํ„ด

>>> random.randint(1, 50)
25

 

 

itertools

 

1. itertools.zip_longest 

 

: zip ํ•จ์ˆ˜์™€ ๋™์ผํ•œ ๋ฐฉ์‹์œผ๋กœ ๋™์ž‘

๊ทธ๋Ÿฌ๋‚˜ itertools.zip_longest ํ•จ์ˆ˜๋Š” ๋ฐ˜๋ณต ๊ฐ€๋Šฅ ๊ฐ์ฒด์˜ ๊ธธ์ด๊ฐ€ ์„œ๋กœ ๋‹ค๋ฅผ ๊ฒฝ์šฐ, ๊ธด ๊ฐ์ฒด์˜ ๊ธธ์ด์— ๋งž์ถฐ fillvalue์— ์„ค์ •ํ•œ ๊ฐ’์„ ์งง์€ ๊ฐ์ฒด์˜ ๋นˆ ๊ณต๊ฐ„์— ์ฑ„์šด๋‹ค.

 

>>> import itertools
>>> teammember = ['๋ฐ•์ง€ํ˜ธ', '์†Œ์ •์ธ', '๊น€์„ธ์–ธ', '๋ฐ•์ค€ํ˜„', '์ธ์‹œํ™˜']
>>> snacks = ['์ƒˆ์šฐ๊นก', '๊ผฌ๊น”์ฝ˜', '๋งˆ์ด๊ตฌ๋ฏธ']
>>> result = itertools.zip_longest(teammember, snacks, fillvalue = 'ํ† ๋ ˆํƒ€')
>>> print(list(result))
[('๋ฐ•์ง€ํ˜ธ', '์ƒˆ์šฐ๊นก'), ('์†Œ์ •์ธ', '๊ผฌ๊น”์ฝ˜'), ('๊น€์„ธ์–ธ', '๋งˆ์ด๊ตฌ๋ฏธ'), ('๋ฐ•์ค€ํ˜„', 'ํ† ๋ ˆํƒ€'), ('์ธ์‹œํ™˜', 'ํ† ๋ ˆํƒ€')]

 

์œ„์˜ ์˜ˆ์‹œ์—์„œ๋Š” ํŒ€ ๊ตฌ์„ฑ์›์˜ ์ˆ˜๊ฐ€ ๊ฐ„์‹์˜ ์ˆ˜๋ณด๋‹ค ๋งŽ์œผ๋ฏ€๋กœ

fillvalue๋กœ ์ง€์ •๋œ 'ํ† ๋ ˆํƒ€'๋กœ ๊ฐ„์‹์˜ ๋นˆ ๋ถ€๋ถ„์„ ์ฑ„์šด ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

 

 

2. itertools.permutation

 

: ๋ฐ˜๋ณต ๊ฐ€๋Šฅ ๊ฐ์ฒด ์ค‘ r๊ฐœ๋ฅผ ์„ ํƒํ•œ '์ˆœ์—ด'์„ ๋ฆฌํ„ด

 

 

3. itertools.combination

 

: ๋ฐ˜๋ณต ๊ฐ€๋Šฅ ๊ฐ์ฒด ์ค‘ r๊ฐœ๋ฅผ ์„ ํƒํ•œ '์กฐํ•ฉ'์„ ๋ฆฌํ„ด

 

 

functools.reduce

 

functools.reduce ํ•จ์ˆ˜๋Š” ํ•จ์ˆ˜๋ฅผ ๋ฐ˜๋ณต ๊ฐ€๋Šฅ ๊ฐ์ฒด ์š”์†Œ์— ์ฐจ๋ก€๋Œ€๋กœ ๋ˆ„์  ์ ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•œ๋‹ค.

 

>>> import functools
>>> data = [5, 7, 10, 12, 24]
>>> result = functools.reduce(lambda x, y: x + y, data)
>>> print(result)
58

 

์œ„์™€ ๊ฐ™์ด functools.reduce ํ•จ์ˆ˜๋ฅผ ์ ์šฉํ•˜๋ฉด add ํ•จ์ˆ˜์—์„œ ์š”์†Œ๋“ค์˜ ๋ˆ„์  ํ•ฉ์„ ๊ตฌํ•˜๋Š” ๊ฒƒ๊ณผ ๋™์ผํ•œ ๊ฒฐ๊ณผ๋ฅผ ๋„์ถœํ•  ์ˆ˜ ์žˆ๋‹ค.

 

 

operator.itemgetter

 

operator.itemgetter ๋ชจ๋“ˆ์€ ๋‹ค์–‘ํ•œ ๊ธฐ์ค€์œผ๋กœ ์ •๋ ฌํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ฃผ๋Š” ๋ชจ๋“ˆ์ด๋‹ค.

sorted ํ•จ์ˆ˜์˜ key ๋งค๊ฐœ๋ณ€์ˆ˜์— itemgetter()๋ฅผ ์ ์šฉํ•˜๋ฉด ๋œ๋‹ค.

 

>>> from operator import itemgetter
>>> celebrity = [
	('์กฐ์ •์„', 43, 'M'),
	('pH-1', 34, 'M'),
	('๊ณต์œ ', 44, 'M'),
	('๊ณ ์œค์ •', 27, 'F'),
]
>>> result = sorted(celebrity, key = itemgetter(1))
>>> print(result)
[('๊ณ ์œค์ •', 27, 'F'), ('pH-1', 34, 'M'), ('์กฐ์ •์„', 43, 'M'), ('๊ณต์œ ', 44, 'M')]

 

์œ„ ์˜ˆ์‹œ๋Š” operator.itemgetter ๋ชจ๋“ˆ์„ ํ™œ์šฉํ•ด

celebrity = [ ('์กฐ์ •์„', 43, 'M'), ('pH-1', 34, 'M'), ('๊ณต์œ ', 44, 'M'), ('๊ณ ์œค์ •', 27, 'F'), ]

 

์™€ ๊ฐ™์€ ๋ฆฌ์ŠคํŠธ๋ฅผ ๋‚˜์ด์ˆœ์œผ๋กœ ์ •๋ ฌํ•œ ๊ฒƒ์ด๋‹ค.

์ด๋•Œ itemgetter()์˜ ๊ด„ํ˜ธ ์† ์ˆซ์ž๋Š” 0์ผ ๊ฒฝ์šฐ ์ฒซ ๋ฒˆ์งธ ์š”์†Œ, 1์ผ ๊ฒฝ์šฐ ๋‘ ๋ฒˆ์งธ ์š”์†Œ, 2์ผ ๊ฒฝ์šฐ ์„ธ ๋ฒˆ์งธ ์š”์†Œ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์ •๋ ฌํ•˜๊ฒ ๋‹ค๋Š” ์˜๋ฏธ์ด๋‹ค.

๋”ฐ๋ผ์„œ ์ด๋•Œ๋Š” 1๋กœ ๋‘ ๋ฒˆ์งธ ์š”์†Œ์ธ ๋‚˜์ด๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์ •๋ ฌํ•œ ๊ฒƒ์ด๋‹ค.

* ์ •๋ ฌํ•˜๊ณ ์ž ํ•˜๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ๋”•์…”๋„ˆ๋ฆฌ์ผ ๊ฒฝ์šฐ, temgetter()์˜ ๊ด„ํ˜ธ ์•ˆ์— ๋”•์…”๋„ˆ๋ฆฌ์˜ ํ‚ค๋ฅผ ์ž…๋ ฅํ•˜๋ฉด ๋œ๋‹ค.

 

 

shutil

 

shutil์€ ํŒŒ์ผ์„ ๋ณต์‚ฌํ•˜๊ฑฐ๋‚˜ ์ด๋™ํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ๋ชจ๋“ˆ์ด๋‹ค.

ํŒŒ์ผ์„ ๋ณต์‚ฌํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” shutil.copy ํ•จ์ˆ˜๋ฅผ,

์ด๋™์„ ์œ„ํ•ด์„œ๋Š” shutil.move ํ•จ์ˆ˜๋ฅผ ํ™œ์šฉํ•˜๋ฉด ๋œ๋‹ค.

 

glob

 

glob ๋ชจ๋“ˆ์€ ํŠน์ • ๋””๋ ‰ํ„ฐ๋ฆฌ ์•ˆ์˜ ํŒŒ์ผ๋“ค์„ ์ฝ์–ด์„œ ๋ฆฌํ„ดํ•œ๋‹ค.

*๋‚˜ ? ๋“ฑ์˜ ๋ฉ”ํƒ€ ๋ฌธ์ž๋ฅผ ์จ์„œ ์›ํ•˜๋Š” ํŒŒ์ผ๋งŒ ์ฝ์–ด ๋“ค์ผ ์ˆ˜๋„ ์žˆ๋‹ค.

?์€ 1์ž๋ฆฌ ๋ฌธ์ž์—ด, *์€ ์ž„์˜์˜ ๊ธธ์ด์˜ ๋ฌธ์ž์—ด์„ ์˜๋ฏธํ•œ๋‹ค.

 

 

pickle

pickle ๋ชจ๋“ˆ์€ ๊ฐ์ฒด์˜ ํ˜•ํƒœ๋ฅผ ๊ทธ๋Œ€๋กœ ์œ ์ง€ํ•˜๋ฉด์„œ ํŒŒ์ผ์— ์ €์žฅํ•˜๊ณ  ๋ถˆ๋Ÿฌ์˜ฌ ์ˆ˜ ์žˆ๊ฒŒ ํ•œ๋‹ค.

 

1. pickle.dump

 

: ๊ฐ์ฒด๋ฅผ ํŒŒ์ผ์— ์ €์žฅ

 

2. pickle.load

 

: ์ €์žฅํ•œ ๊ฐ์ฒด ๋ถˆ๋Ÿฌ์˜ค๊ธฐ

 

* ์–ด๋–ค ์ž๋ฃŒํ˜•์ด๋“  ๊ฐ€๋Šฅ !

 

 

os

 

os ๋ชจ๋“ˆ์€ os ์ž์›์„ ์ œ์–ดํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค€๋‹ค.

 

1. os.environ

 

: ํ˜„์žฌ ์‹œ์Šคํ…œ์˜ ํ™˜๊ฒฝ ๋ณ€์ˆซ๊ฐ’ ๋ฆฌํ„ด

(๋”•์…”๋„ˆ๋ฆฌ ํ˜•ํƒœ๋กœ ๊ตฌ์„ฑ๋œ environ ๊ฐ์ฒด๋กœ ๋ฆฌํ„ด)

 

 

2. ds.chdir

 

: ํ˜„์žฌ ๋””๋ ‰ํ„ฐ๋ฆฌ์˜ ์œ„์น˜๋ฅผ ๋ณ€๊ฒฝ

 

 

3. os.getcwd

 

: ํ˜„์žฌ ์ž์‹ ์˜ ๋””๋ ‰ํ„ฐ๋ฆฌ ์œ„์น˜ ๋ฆฌํ„ด

 

 

zipfile

 

zipfile ๋ชจ๋“ˆ์€ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ํŒŒ์ผ์„ zip ํ˜•์‹์œผ๋กœ ํ•ฉ์น˜๊ฑฐ๋‚˜ ํ•ด์ œํ•  ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค.

 

1. write()

 

: zipfile์— ๊ฐœ๋ณ„ ํŒŒ์ผ์„ ์ถ”๊ฐ€

 

 

2. extreactall()

 

: zipfile ์•ˆ ๋ชจ๋“  ํŒŒ์ผ์„ ํ•ด์ œ

 

3. compression, compresslevel

 

: ํŒŒ์ผ์„ ์••์ถ•ํ•˜์—ฌ ๋ฌถ๊ธฐ

* compression์˜ 4๊ฐ€์ง€ ์ข…๋ฅ˜: ZIP_STORED, ZIP_DEFLATED, ZIP_BZIP2, ZIP_LZMA

* compresslevel์€ ์••์ถ• ์ˆ˜์ค€์„ ๋‚˜ํƒ€๋‚ด๋Š” ๊ฐ’์œผ๋กœ, 1~9๋กœ ๋‚˜ํƒ€๋‚ธ๋‹ค. ์ด๋•Œ 1์€ ์†๋„๊ฐ€ ๊ฐ€์žฅ ๋น ๋ฅด์ง€๋งŒ ์••์ถ•๋ฅ ์ด ๋‚ฎ๊ณ , ๋ฐ˜๋Œ€๋กœ 9๋Š” ์†๋„๋Š” ๊ฐ€์žฅ ๋Š๋ฆฌ์ง€๋งŒ ์••์ถ•๋ฅ ์ด ๋†’๋‹ค.

 

 

tempfile

 

tempfile ๋ชจ๋“ˆ์€ ํŒŒ์ผ์„ ์ž„์‹œ๋กœ ๋งŒ๋“ค์–ด์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•œ๋‹ค.

 

1. tempfile.mkstemp()

 

: ์ค‘๋ณต๋˜์ง€ ์•Š๋Š” ์ž„์‹œ ํŒŒ์ผ์˜ ์ด๋ฆ„์„ ๋ฌด์ž‘์œ„๋กœ ๋งŒ๋“ค์–ด์„œ ๋ฆฌํ„ด

 

 

2. tempfile.TemporaryFile()

 

: ์ž„์‹œ ์ €์žฅ ๊ณต๊ฐ„์œผ๋กœ ์‚ฌ์šฉํ•  ํŒŒ์ผ ๊ฐ์ฒด๋ฅผ ๋ฆฌํ„ด

f.close()๊ฐ€ ํ˜ธ์ถœ๋˜๋ฉด ํŒŒ์ผ ์ž๋™ ์‚ญ์ œ

 

 

traceback

 

traceback ๋ชจ๋“ˆ์€ ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰ ์ค‘ ๋ฐœ์ƒํ•œ ์˜ค๋ฅ˜๋ฅผ ์ถ”์ ํ•  ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค.

์ด๋•Œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•œ ์œ„์น˜์— print(traceback.format_exc()) ๋ฌธ์žฅ์„ ์ถ”๊ฐ€ํ•˜๋ฉด ์˜ค๋ฅ˜ ์ถ”์  ๊ฒฐ๊ณผ๋ฅผ ๋ฌธ์ž์—ด๋กœ ๋ฆฌํ„ดํ•œ๋‹ค.

 

 

urllib

 

urllib ๋ชจ๋“ˆ์€ URL์„ ์ฝ๊ณ  ๋ถ„์„ํ•  ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค.

 

webbrowser

 

webbrowser ๋ชจ๋“ˆ์€ ํŒŒ์ด์ฌ ํ”„๋กœ๊ทธ๋žจ์„ ํ†ตํ•ด ์‹œ์Šคํ…œ ๋ธŒ๋ผ์šฐ์ €๋ฅผ ํ˜ธ์ถœํ•  ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค.

์›น ํŽ˜์ด์ง€๋ฅผ ์ƒˆ ์ฐฝ์œผ๋กœ ์—ด๊ธฐ ์œ„ํ•ด์„œ๋Š” webbrowser.open_new() ํ•จ์ˆ˜๋ฅผ ํ™œ์šฉํ•˜๋ฉด ๋œ๋‹ค.

* ์ด๋ฏธ ์—ด๋ฆฐ ๋ธŒ๋ผ์šฐ์ €๋กœ ์›น ํŽ˜์ด์ง€๋ฅผ ์—ด๊ธฐ ์œ„ํ•ด์„œ๋Š” open_new() ๋Œ€์‹  open()์„ ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค.

 

์ž‘์„ฑ์ž: ์†Œ์ •์ธ

์ž‘์„ฑ์ผ: 24/04/01

<5-7. ์™ธ๋ถ€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ>

pip

-> pip์€ ํŒŒ์ด์ฌ ๋ชจ๋“ˆ์ด๋‚˜ ํŒจํ‚ค์ง€๋ฅผ ์‰ฝ๊ฒŒ ์„ค์น˜ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ฃผ๋Š” ๋„๊ตฌ์ด๋‹ค. pip์œผ๋กœ ํŒŒ์ด์ฌ ํ”„๋กœ๊ทธ๋žจ์„ ์„ค์น˜ํ•˜๋ฉด ์˜์กด์„ฑ ์žˆ๋Š” ๋ชจ๋“ˆ์ด๋‚˜ ํŒจํ‚ค์ง€๋ฅผ ํ•จ๊ป˜ ์„ค์น˜ํ•ด ์ฃผ๊ธฐ ๋•Œ๋ฌธ์— ๋งค์šฐ ํŽธ๋ฆฌํ•˜๋‹ค.

 

pip install

-> PyPI๋Š” ํŒŒ์ด์ฌ ์†Œํ”„ํŠธ์›จ์–ด๊ฐ€ ๋ชจ์ธ ์ €์žฅ ๊ณต๊ฐ„์ด๋‹ค. ํ˜„์žฌ ์ด๊ณณ์—๋Š” 10๋งŒ๊ฑด ์ด์ƒ์˜ ํŒŒ์ด์ฌ ํŒจํ‚ค์ง€๊ฐ€ ๋“ฑ๋ก๋˜์–ด ์žˆ์œผ๋ฉฐ ์ด๊ณณ์— ๋“ฑ๋ก๋œ ํŒŒ์ด์ฌ ํŒจํ‚ค์ง€๋Š” ๋ˆ„๊ตฌ๋‚˜ ๋‚ด๋ ค๋ฐ›์•„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

-> pip install SomePackage

 

pip uninstall

->  ์„ค์น˜ํ•œ ํŒจํ‚ค์ง€๋ฅผ ์‚ญ์ œํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด ๋‹ค์Œ ๋ช…๋ น์–ด๋กœ ์‚ญ์ œํ•  ์ˆ˜ ์žˆ๋‹ค.

-> pip uninstall SomePackage

 

ํŠน์ • ๋ฒ„์ „์œผ๋กœ ์„ค์น˜ํ•˜๊ธฐ

-> pip install SomePackage==1.0.4

 

์ตœ์‹  ๋ฒ„์ „์œผ๋กœ ์—…๊ทธ๋ ˆ์ด๋“œํ•˜๊ธฐ

-> pip install --upgrade SomePackage

 

์„ค์น˜๋œ ํŒจํ‚ค์ง€ ํ™•์ธํ•˜๊ธฐ

-> pip list

 

Faker

-> C:๏ผผ pip install Faker

 

Faker ์‚ฌ์šฉํ•ด ๋ณด๊ธฐ

-> ํ…Œ์ŠคํŠธ ๋ฐ์ดํ„ฐ๋Š” Faker๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋งค์šฐ ์‰ฝ๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค.

 

Faker ํ™œ์šฉํ•˜๊ธฐ

->

 

sympy

-> sympy๋Š” ๋ฐฉ์ •์‹ ๊ธฐํ˜ธ(symbol)๋ฅผ ์‚ฌ์šฉํ•˜๊ฒŒ ํ•ด ์ฃผ๋Š” ์™ธ๋ถ€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ด๋‹ค. ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ pip์„ ์ด์šฉํ•˜์—ฌ sympy๋ฅผ ์„ค์น˜ํ•˜์ž.