나는 java를 주 언어로 프로그래밍 공부를 하는 중인데 최근 python을 사용할 일이 있어서 거의 처음으로 사용했다.
대강 흐름은 비슷하고 오히려 java보다 type 지정 같은 것도 간단해서 편하긴한데, 문법이 조금씩 다른게 있어서 정리해보려고 한다.
서론이 너무 길었다.
0. if (java vs python)
if __name__=="__main__":
이걸 알아보기 전에 python의 if statement 차이를 집고 넘어가야 한다.
<java>
if(condition){
expression;
}
<python>
if condition:
expression
대강 구성은 비슷하지만, 약간씩 다르다.
java는 괄호( ) 안에 condition을 넣고, { } 안에 expression을 적는다.
그리고 각 expression은 semi-colon ; 으로 구분하기 때문에 expression의 위치는 중요하지 않다.
python은 if 바로 다음에 condition을 작성하고 : 를 통해 condition이 끝났음을 표기한다.
그리고 expression은 다음 줄로 작성하는데, python은 ; 을 사용하지 않기 때문에 line이 매우 중요하다.
따라서 expression의 위치가 매우 중요하다.
1. if __main__ == "__main__"
결론부터 말해서 java의 main( ) method 역할이라고 보면 된다.
java의 경우, 한 class 내에 있는 main(String[] args){ } 를 실행한다.
public class A{
public static void main(String[] args){
...
}
}
이런 형태를 가진다.
class A 내에 다른 methods를 아무리 만들어도 저절로 실행이 되는 것은 아니다.
main method 안에서 call을 해줄 때 실현이 된다.
python에서 if __name__="__main__" 이 바로 이 기능을 한다.
# test.py
def add(a,b):
return a+b
def main():
...
if __name__="__main__":
main()
이 test.py 라는 module을 실행시켰을 때는 main( ) 실행되도록 하는 기능을 한다.
여기까지만 보면 이해가 안 될 수도 있다.
예시를 들어서 설명해보겠다
# test.py
def add(a,b):
return a+b
print(add(3,4))
이런 코드가 있다.
add( ) 라는 function은 arguments 2개의 값을 더해서 return 하는 기능을 한다.
만약, 이 module을 실행시킨다면 당연히 7이 print될 것이다.
그렇다면 다른 test2 module에서 이 test module의 add( ) function을 사용하고 싶다면 어떻게 해야 할까?
#test2.py
import test
이렇게 진행할 것이다.
하지만 여기서 문제가 생긴다.
우리는 test.add( ) function만 사용하고 싶은데 print(add(3,4)) 가 자동으로 실행되기 때문이다.
이걸 위해 if __name__ == "__main__": 이 필요한 것이다.
# test.py
def add(a,b):
return a+b
if __name__=="__main__":
print(add(3,4))
이제 이 코드를 이렇게 바꿔보자.
__name__ 은 python 내부적으로 사용되는 variable 중 하나이다.
만약, test.py 를 직접 실행하면 해당 __name__ variable에는 "__main__"이라는 값이 입력된다.
해당 module이 main이라는 뜻으로 지정해두는 것이다.
이제 test.py를 import해서 사용하더라도 print(add(3,4))는 실행되지 않는다.
test.add( ) function을 편하게 사용해도 되는 것이다.
결론: if __name__="__main__": 는 해당 module을 직접 실행했을 때만 실행되는 java의 main( ) method 같은 기능을 한다.
'Language > python' 카테고리의 다른 글
| [python] with (0) | 2022.04.12 |
|---|