ํ์ด์ฌ๊ณผ ์กฐ๊ฑด๋ฌธ
ํ์ด์ฌ์์๋ ์๋ ์ฝ๋์ฒ๋ผ ์กฐ๊ฑด๋ฌธ์ ์์ฑํ ์ ์์ต๋๋ค.
if a == 1:
print ("Hello 1")
elif a == 2:
print ("Hello 2")
elif a == 3:
print ("Hello 3")
elif a == 4:
print ("Hello 4")
elif a == 5:
print ("Hello 5")
else:
print ("Hello Everyone")
C, C++ ๋๋ Java ์ธ์ด์ ๋ง์ฐฌ๊ฐ์ง๋ก if ~ else if ~ else ๋ฌธ์ฅ์ ์ง์ํ๊ณ ์์ต๋๋ค.
๊ทธ๋ ๋ค๋ฉด switch ๋ฌธ์ฅ์ ์ด๋ป๊ฒ ์ฌ์ฉํ ๊น์?
์๋ฐ ์ธ์ด๋ฅผ ์๋ก ๋ค์ผ๋ฉด ์ ๋ฌธ์ฅ์ ์๋์ ๊ฐ์ switch ๋ฌธ์ผ๋ก ๋ณ๊ฒฝํ ์ ์์ต๋๋ค.
switch (a) {
case 1:
System.out.println("Hello 1");
case 2:
System.out.println("Hello 2");
case 3:
System.out.println("Hello 3");
case 4:
System.out.println("Hello 4");
case 5:
System.out.println("Hello 5");
default:
System.out.println("Hello Everyone");
}
๊ทธ๋ฐ๋ฐ ์์ฝ๊ฒ๋ ํ์ด์ฌ์๋ ์์ฒ๋ผ switch ์กฐ๊ฑด๋ฌธ์ด ์์ต๋๋ค. ๊ฝค ์์ฌ์ด ๋ถ๋ถ์ด๊ธด ํฉ๋๋ค.
ํ์ง๋ง ๋์
๋๋ฆฌ(Dictionary)๋ฅผ ์ฌ์ฉํ์ฌ ์ ์ฌํ๊ฒ ๊ตฌํํ ์ ์์ต๋๋ค.
ํ์ด์ฌ์ผ๋ก switch ํ๋ด๋ด๊ธฐ
๋์
๋๋ฆฌ(Dictionary)๋ ํค์ ๋ฐ์ดํฐ ๊ฐ์ด ํ ์์ ์ด๋ฃจ๋ ์๋ฃํ์
๋๋ค. ์ด๋ฅผ ์ด์ฉํ๋ค๋ฉด
์ฐ๋ฆฌ๊ฐ ๊ตฌํํ๊ณ ์ ํ๋ switch ์กฐ๊ฑด๋ฌธ๊ณผ ์ ์ฌํ ๊ธฐ๋ฅ์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
# -*- coding: utf-8 -*-
def hello(a):
return {
1: "Hello 1",
2: "Hello 2",
3: "Hello 3",
4: "Hello 4",
5: "Hello 5",
}.get(a, "Hello Everyone")
def main():
print(hello(2)); # Hello 2
print(hello(6)); # Hello Everyone
if __name__ == "__main__":
main()
ํจ์(Function)์ ์กฐํฉํด์ ์๋์ ๊ฐ์ด ์ฌ์ฉ๋ ๊ฐ๋ฅํฉ๋๋ค.
# -*- coding: utf-8 -*-
def hello1():
print("Hello 1")
def hello2():
print("Hello 2")
# ... ์๋ต
def main():
hello_switcher = {
1: hello1,
2: hello2,
3: hello3,
4: hello4,
5: hello5,
}
try:
# Hello 2 ์ถ๋ ฅ, ํจ์ ํธ์ถ
hello_switcher[2]()
# Hello Everyone ์ถ๋ ฅ, ํจ์ ํธ์ถ
hello_switcher[-1]()
except Exception as e:
print (e)
print("Hello Everyone")
if __name__ == "__main__":
main()
๋ฐฉ๊ธ ์ดํด๋ณธ ์ฝ๋๋ฅผ lambda๋ฅผ ์ฌ์ฉํ์ฌ ์กฐ๊ธ ๋ณ๊ฒฝํ ์๋ ์์ต๋๋ค.
๋ฐํ๋ ๊ฐ์ด ๋๋ค ํํ์ธ์ง ๋น๊ตํ๊ธฐ ์ํด isinstance ํจ์๋ ์ฌ์ฉํฉ๋๋ค.
import types
# -*- coding: utf-8 -*-
def hello1(val):
print("Hello" + val)
def hello2(val):
print("Hello" + val)
# ... ์๋ต
def hello_switcher(val):
hello = {
1: lambda: hello1(str(val)),
2: lambda: hello2(str(val)),
3: lambda: hello3(str(val)),
4: lambda: hello4(str(val)),
5: lambda: hello5(str(val))
}
helloFunc = hello.get(val, "Hello Everyone")
# isinstance(a, b) : a๊ฐ bํ์
์ธ๊ฐ?
if isinstance(helloFunc, types.LambdaType):
helloFunc()
else:
print (helloFunc)
def main():
# Hello 2
hello_switcher(2)
# Hello Everyone
hello_switcher(6)
if __name__ == "__main__":
main()
์์์ ์ดํด๋ณธ ๊ฒ์ฒ๋ผ ํ์ด์ฌ์์๋ switch ๋ฌธ์ด ์์ด๋ ๋์
๋๋ฆฌ(Dictionary)๋ฅผ ์ด์ฉํด์
์ ์ฌํ๊ฒ ๊ตฌํํ ์ ์์ต๋๋ค.