728x90

๋ฐฐ๊ฒฝ

## image_data : FastAPI file: UploadFile

extention = image_data.filenamesplit('.',1)[-1].lower()

if extention is "pdf":
    image_data = pdf2png(image_data)
    extention = "png"

์—์„œ extention ์ด pdf ์ž„์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  if ๋ฅผ ๊ฑด๋„ˆ๋›ฐ๋Š” ๊ฒƒ์„ ์•Œ๊ฒŒ๋˜์—ˆ๋Š”๋ฐ, == ๋กœ ๊ณ ์น˜๋‹ˆ ์กฐ๊ฑด๋ฌธ์ด ์‹คํ–‰๋˜๋Š” ๊ฒƒ์„ ๋ณด์•„ is ์™€ == ๊ฐ€ ์–ด๋–ค ์ฐจ์ด๊ฐ€ ์žˆ๋Š”์ง€ ์ •๋ฆฌํ•ฉ๋‹ˆ๋‹ค.


2. is ์™€ == ์˜ ์ฐจ์ด

Python์—์„œ ๋‘ ์—ฐ์‚ฐ์ž๋Š” ๊ฒ‰๋ณด๊ธฐ์—๋Š” ๋น„์Šทํ•ด ๋ณด์ด์ง€๋งŒ ์™„์ „ํžˆ ๋‹ค๋ฅธ ๋น„๊ต ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

์—ฐ์‚ฐ์ž ์˜๋ฏธ
== ๊ฐ’(value)์ด ๊ฐ™์€์ง€ ๋น„๊ต
is ๊ฐ์ฒด(identity)๊ฐ€ ๊ฐ™์€์ง€ ๋น„๊ต

์ฆ‰,

  • == : ๋‚ด์šฉ์ด ๊ฐ™์€์ง€
  • is : ๊ฐ™์€ ๊ฐ์ฒด์ธ์ง€

๋ฅผ ๋น„๊ตํ•ฉ๋‹ˆ๋‹ค.


3. == : ๊ฐ’ ๋น„๊ต (Equality)

==๋Š” ๋‘ ๊ฐ์ฒด์˜ ๊ฐ’์ด ๋™์ผํ•œ์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

a = "pdf"
b = "pdf"

print(a == b)

๊ฒฐ๊ณผ

True

๋ฌธ์ž์—ด์˜ ๋‚ด์šฉ์ด ๊ฐ™๊ธฐ ๋•Œ๋ฌธ์— ํ•ญ์ƒ True๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ ๋ฌธ์ž์—ด ๋น„๊ต๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ==๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.


4. is : ๊ฐ์ฒด ๋™์ผ์„ฑ ๋น„๊ต (Identity)

is๋Š” ๋‘ ๊ฐ์ฒด๊ฐ€ ๊ฐ™์€ ๋ฉ”๋ชจ๋ฆฌ ๊ฐ์ฒด์ธ์ง€๋ฅผ ๋น„๊ตํ•ฉ๋‹ˆ๋‹ค.

a = "pdf"
b = "pdf"

print(a is b)

์ด ๊ฒฐ๊ณผ๋Š” ํ™˜๊ฒฝ์— ๋”ฐ๋ผ ๋‹ค๋ฅด๊ฒŒ ๋‚˜์˜ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

True

๋˜๋Š”

False

์ด์œ ๋Š” Python์˜ string interning ์ตœ์ ํ™” ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

์–ด๋–ค ๊ฒฝ์šฐ์—๋Š” ๋™์ผํ•œ ๋ฌธ์ž์—ด ๋ฆฌํ„ฐ๋Ÿด์„ ๊ฐ™์€ ๊ฐ์ฒด๋กœ ์žฌ์‚ฌ์šฉํ•˜๊ณ , ์–ด๋–ค ๊ฒฝ์šฐ์—๋Š” ์ƒˆ๋กœ์šด ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

์ฆ‰ is๋Š” ๊ฐ’์ด ๊ฐ™์•„๋„ False๊ฐ€ ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


5. ์‹ค์ œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•œ ์ด์œ 

๋ฌธ์ œ์˜ ์ฝ”๋“œ์—์„œ extention์€ ๋‹ค์Œ ์ฝ”๋“œ๋กœ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค.

extention = image_data.filename.split('.', 1)[-1].lower()

์ด ๊ณผ์ •์—์„œ "pdf"๋ผ๋Š” ๋ฌธ์ž์—ด์ด ์ƒˆ๋กœ์šด ๊ฐ์ฒด๋กœ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ƒํ™ฉ์ž…๋‹ˆ๋‹ค.

"pdf" (๋ฌธ์ž์—ด ๋ฆฌํ„ฐ๋Ÿด)
"pdf" (split ๊ฒฐ๊ณผ)

์ด ๋‘ ๋ฌธ์ž์—ด์€ ๊ฐ’์€ ๊ฐ™์ง€๋งŒ ๊ฐ์ฒด๋Š” ์„œ๋กœ ๋‹ค๋ฆ…๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ

extention is "pdf"

๋Š” False๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ

extention == "pdf"

๋Š” ๊ฐ’ ๋น„๊ต์ด๊ธฐ ๋•Œ๋ฌธ์— True๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.


6. ์˜ฌ๋ฐ”๋ฅธ ์ฝ”๋“œ

๋”ฐ๋ผ์„œ ๋ฌธ์ž์—ด ๋น„๊ต๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ž‘์„ฑํ•˜๋Š” ๊ฒƒ์ด ์˜ฌ๋ฐ”๋ฆ…๋‹ˆ๋‹ค.

extention = image_data.filename.split('.', 1)[-1].lower()

if extention == "pdf":
    image_data = pdf2png(image_data)
    extention = "png"

7. is ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ

is๋Š” ์ฃผ๋กœ Singleton ๊ฐ์ฒด ๋น„๊ต์—์„œ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

๋Œ€ํ‘œ์ ์ธ ์˜ˆ๋Š” None์ž…๋‹ˆ๋‹ค.

if data is None:
    ...

PEP8์—์„œ๋„ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค.

None ๋น„๊ต์—๋Š” is๋ฅผ ์‚ฌ์šฉํ•˜๊ณ , ๊ฐ’ ๋น„๊ต์—๋Š” ==๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.


8. ์ •๋ฆฌ

Python์—์„œ is์™€ ==๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ฐจ์ด๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

์—ฐ์‚ฐ์ž ๋น„๊ต ๋Œ€์ƒ ์‚ฌ์šฉ ์˜ˆ
== ๊ฐ’ ๋น„๊ต ๋ฌธ์ž์—ด, ์ˆซ์ž ๋น„๊ต
is ๊ฐ์ฒด ๋™์ผ์„ฑ ๋น„๊ต None ๋น„๊ต

๋”ฐ๋ผ์„œ ๋ฌธ์ž์—ด ๋น„๊ต์—์„œ๋Š” ==๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์˜ฌ๋ฐ”๋ฅธ ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค.

์ด๋ฒˆ ๊ฒฝํ—˜์„ ํ†ตํ•ด Python์—์„œ ๊ฐ์ฒด ๋™์ผ์„ฑ๊ณผ ๊ฐ’ ๋น„๊ต์˜ ์ฐจ์ด๋ฅผ ๋‹ค์‹œ ํ•œ๋ฒˆ ์ดํ•ดํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

728x90

+ Recent posts