코딩에 있어 가장 기본적인 문법 중 하나로 언어 마다 조금씩 사용법이 다르기 때문에 그 사용 방법에 대해 잘 이해하고 있어야 한다.
1. if 구문 기본 사용법 if 조건문1: 실행문1-1 실행문1-2 .... elif 조건문2: 실행문2-1 실행문2-2 .... else: 실행문 3-1 실행문 3-2 ...
일상 생활에서의 예와 code로서 if 문을 비교해 보면 다음과 같다.
1-1. 한 줄 (One line) 조건문의 특별한 사용 조건에 따라 처리해야 할 구문이 많다면 위에 언급한 기본 조건문의 구조를 사용하면된다. 하지만 단순히 조건에 따른 할당과 같이 조건에 따라 처리해야 할 구문이 한 줄이라면 다음과 같은 구문의 조건문을 사용해 보는 것도 고려해 볼만하다.
조건문이 True 일 경우 value1 이 Variable에 할당되고, 아니라면 value2 가 Variable에 할당된다. [일반 조건문 사용하여 변수값 할당시] >>> cond = "Sample" >>> if cond == "Sample": ... simple = True ... else: ... simple = False ... >>> print(simple) True [한 줄 조건문 사용하여 변수값 할당시] >>> cond = "Sample" >>> simple = True if cond == "Sample" else False >>> print(simple) True 2. 조건 type에 따른 if 구문의 사용 python 변수에는 type이 있고, 해당 type 별로 if 구문을 사용하는 방법에 대해 알아보고자 한다.
2-1. if 구문에서 boolean 조건 사실 boolean을 비교할 필요는 없다. boolean 자체가 true, false이기 때문에 비교 없이 if 구문에서 바로 사용 될 수 있기 때문이다. 그러함에도 가독성이나 명시적으로 표현하기 위해 사용하는 경우가 있을 수 있음으로 그 사용법을 살펴보면 다음과 같다.
>>> a=True >>> if a == True: ... print "a is True" ... a is True >>> >>> if a is True: ... print "a is True" ... a is True >>> >>> if a: ... print "a is True" ... a is True >>> >>> a=False >>> if a != True: ... print "a is False" ... a is False >>> >>> if a is not True: ... print "a is False" ... a is False >>> >>> if not a: ... print "a is False" ... a is False >>> 2-2. if 구문에서 숫자 조건 숫자의 비교는 if 문에서 가장 많이 사용하는 조건이 아닐까 한다.
[Python - 변수 할당의 개념] 에서도 언급하긴 하였지만 object의 주소 역할을 하는 id를 비교할 때는 "is"를 사용하고, 값을 비교할 때는 "=="를 사용해야 한다. 좀 더 자세한 이해가 필요하다면 [Python - 변수 할당의 개념] 를 읽어보자. 2-3. if 구문에서 문자열 조건 문자열(String)의 비교는 언어에 따라 사뭇 다르곤 한다. 따라서 python에서 사용되는 문자열의 비교 방법에 대해 잘 알고 다른 언어와 어떤 차이점이 있는지 알고 있어야 사용이 가능하다.
아래의 실제 실행 결과를 보면 알겠지만 boolean 비교와 크게 다르지 않다. 다만 단순 boolean 비교와 다른 것으로 인지하고 있어야 할 점이 있는데, 실제 문자열 값으로 어떤 것이라도 가지고 있다면 True로 인식되고, "" 로 아무것도 가지고 있지 않다면 False로 인식된다는 점이다. >>> a="String" >>> if a == "String": ... print "OK" ... OK >>> >>> if a != "String": ... print "OK" ... >>> >>> if a is "String": ... print "OK" ... OK >>> >>> if a is not "String": ... print "OK" ... >>> >>> if a: ... print "OK" ... OK >>> >>> if not a: ... print "OK" ... >>> >>> a="" >>> if a == "": ... print "OK" ... OK >>> >>> if a: ... print "OK" ... >>> >>> if not a: ... print "OK" ... OK >>> >>> a = "abcdefghijklmn" >>> if "bcd" in a: ... print "OK" ... OK >>> if "xyz" in a: ... print "OK" ... else: ... print "NOK" ... NOK >>> 2-4. is 와 == 의 차이 앞서 언급한 조건문을 보면 is 로 그 동일함을 확인하는 경우가 있고, == 로 동일함을 확인하는 경우가 있었다. 그 차이는 다음과 같다.
>>> a = "String" >>> b = "String" >>> if a == b: ... print("OK") ... OK >>> if a is b: ... print("OK") ... OK >>> id(a) 140040905899872 >>> id(b) 140040905899872 >>> if a == b: ... print("OK") ... OK >>> if a is b: ... print("OK") ... >>> id(a) 140040905899872 >>> id(b) 140040905899968 위와 같이 변수 a와 b에 같은 값을 넣었다고 하더라도 해당 변수가 저장된 memory address (identity) 가 같을 수도 있고, 다를 수도 있다. 따라서 단순히 값만 비교하는 경우라면 "==" 를 사용해서 비교해야 한다. 3. if 구문 관련 Error SyntaxError: invalid syntax 발생 case 1> 비교 연산자가 아닌 할당을 하였을 경우 >>> if a = "test" File "", line 1 if a = "test" ^ SyntaxError: invalid syntax >>> 발생 case 2> if / elif / else 구문 라인 끝에 : (콜론)을 누락하였을 경우 >>> if a == "test" File "", line 1 if a == "test" ^ SyntaxError: invalid syntax >>> |