๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐ŸŒฑ CS Study/ํŒŒ์ด์ฌ

๋‹จ๋ฝ ํ‰๊ฐ€ (short-circuit evaluation)

by HelloRabbit 2022. 7. 26.
728x90

๋‹จ๋ฝ ํ‰๊ฐ€

๋…ผ๋ฆฌ ์—ฐ์‚ฐ์ž ์ค‘ and์™€ or์—๋Š” ๋‹จ๋ฝ ํ‰๊ฐ€๋ผ๋Š” ๊ฒƒ์ด ์ž‘์šฉํ•œ๋‹ค. ์ด ์›๋ฆฌ๋Š” ์ƒ๊ฐ๋ณด๋‹ค ๋งŽ์ด ๋ณผ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์•Œ์•„๋‘๋ฉด ์—๋Ÿฌ ์žก๋Š”๋ฐ ์œ ์šฉํ•˜๋‹ค.

 

๊ฐ„๋‹จํ•˜๊ฒŒ ์„ค๋ช…ํ•˜์ž๋ฉด ๋‹จ๋ฝ ํ‰๊ฐ€๋Š” ์ฒซ๋ฒˆ์งธ ๊ฐ’์—์„œ ์ด๋ฏธ ๋ฐ˜ํ™˜ ๊ฐ’์ด ํ™•์‹คํ•ด์กŒ๋‹ค๋ฉด ๋‘๋ฒˆ์งธ ๊ฐ’์€ ํ™•์ธํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์ด๋‹ค.

A Operator A and/or B Output Notes
True and True and 'rabbit' rabbit ์ฒซ๋ฒˆ์งธ ๊ฐ’์ด True๋ฉด ๋‘๋ฒˆ์งธ ๊ฐ’์— ๋‹จ๋ฝ ํ‰๊ฐ€๊ฐ€ ์ ์šฉ ๋ผ ๋‘๋ฒˆ์งธ ๊ฐ’์„ ๋ฌด์กฐ๊ฑด ๋ฐ˜ํ™˜ํ•œ๋‹ค.
False False and 'rabbit' False and์—์„œ๋Š” ์–‘์ชฝ ๋ชจ๋‘ True๊ฐ€ ๋˜์–ด์•ผ True๋ฅผ ๋ฐ˜ํ™˜ํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ฒซ๋ฒˆ์งธ ๊ฐ’์ด False๊ฐ€ ๋‚˜์˜ค๋ฉด ๋‹จ๋ฝ ํ‰๊ฐ€๊ฐ€ ์ ์šฉ ๋ผ ์ฒซ๋ฒˆ์งธ ๊ฐ’์ธ False๊ฐ€ ๋ฐ˜ํ™˜๋œ๋‹ค.
True or True or 'rabbit' True or์—์„œ๋Š” ํ•œ์ชฝ๋งŒ True๋ฉด ๋˜๊ธฐ ๋•Œ๋ฌธ์— ์ฒซ๋ฒˆ์งธ ๊ฐ’์ด True๋ผ๋ฉด ๋‹จ๋ฝ ํ‰๊ฐ€๊ฐ€ ์ž‘์šฉํ•ด ๋‘๋ฒˆ์งธ ๊ฐ’์€ ํ‰๊ฐ€ํ•˜์ง€ ์•Š๊ณ  ์ฒซ๋ฒˆ์งธ ๊ฐ’์ธ True๊ฐ€ ๋ฐ˜ํ™˜๋œ๋‹ค.
False False or 'rabbit' rabbit ์ฒซ๋ฒˆ์งธ ๊ฐ’์ด False๋ฉด ๋‘๋ฒˆ์งธ ๊ฐ’์— ๋‹จ๋ฝ ํ‰๊ฐ€๊ฐ€ ์ ์šฉ ๋ผ ๋‘๋ฒˆ์งธ ๊ฐ’์„ ๋ฌด์กฐ๊ฑด ๋ฐ˜ํ™˜ํ•œ๋‹ค.
  • A and B : A๊ฐ€ False์ด๋ฉด A๋ฅผ ๋ฐ˜ํ™˜ํ•˜๊ณ , ๊ทธ ์™ธ์—” B๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
  • A or B :    A๊ฐ€ False์ด๋ฉด B๋ฅผ ๋ฐ˜ํ™˜ํ•˜๊ณ , ๊ทธ ์™ธ์—” A๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

 

์˜ˆ์ œ

print(0 or 0 or 'rabbit')       # rabbit;	์ฒซ๋ฒˆ์งธ ๊ฐ’๋„ False๊ณ  ๋‘๋ฒˆ์งธ ๊ฐ’๋„ False์—ฌ์„œ ์„ธ๋ฒˆ์งธ ๊ฐ’์ด ๋ฐ˜ํ™˜๋œ๋‹ค.
print(0 or 0 and 'rabbit')      # 0;		and๊ฐ€ or๋ณด๋‹ค ๋จผ์ € ํŒ๋‹จ๋œ๋‹ค. 0๊ณผ 'rabbit' ์ค‘ 0์ด False์—ฌ์„œ ๋‹จ๋ฝ ํ‰๊ฐ€๊ฐ€ ์ ์šฉ๋ผ ์ฒซ๋ฒˆ์งธ ๊ฐ’์ธ 0์ด ๋ฐ˜ํ™˜๋œ๋‹ค.
print(0 or 'rabbit' or 1)       # rabbit;	์ฒซ๋ฒˆ์งธ ๊ฐ’์ด False์—ฌ์„œ ๋‘๋ฒˆ์งธ ๊ฐ’์ด ๋ฐ˜ํ™˜๋œ๋‹ค.
print(0 or 'rabbit' and 1)      # 1;		and๊ฐ€ or๋ณด๋‹ค ๋จผ์ € ํŒ๋‹จ๋œ๋‹ค. 'rabbit'๊ณผ 1 ์ค‘ 'rabbit'์€ True์—ฌ์„œ 1์ด ๋ฐ˜ํ™˜๋œ๋‹ค.

 

๋Œ“๊ธ€