-
Notifications
You must be signed in to change notification settings - Fork 2
Control Structure
if suffix == ".htm":
content = "text/html"
elif suffix == ".jpg":
content = "image/jpeg"
else:
raise RuntimeError("Unknown content type")
김대근 comments:
그리고 if 문을 쓰면서 주의해야할 것은
x = ...
if x:
# blah blah
가 의미하는 바를 알아야할 것 같네요. ㅋㅋ
x is not None
으로 생각하고 썼다면 문제가 생기는 코드네요.
0, 0.0, (), [], {}, '', x.__len__() == 0
인 것 등등도 저 if x:
를 만족하지 못하네요. 쓰실 때 참고하세요.
f = open("foo.txt")
line = f.readline()
while line:
print line,
line = f.readline()
...
f.close
for line in open("foo.txt")
print line,
예)
입력 1000000
출력 1,000,000
>>> a = "1000000"
>>> b = a[::-1]
>>>
>>> for i in range(len(b)):
... if (i % 3 == 0 and i != 0): result += "," + b[i]
... else: result += b[i]
...
>>> result
'000,000,1'
>>> result[::-1]
'1,000,000'
1
1 1
1 2
1 1 2 1
1 2 2 1 1 1
1 1 2 2 1 3
1 2 2 2 1 1 3 1
1 1 2 3 1 2 3 1 1 1
1 2 2 1 3 1 1 1 2 1 3 1 1 3
1 1 2 2 1 1 3 1 1 3 2 1 1 1 3 1 1 2 3 1
>>> import itertools
>>> seq = [1]
>>> for i in range(10):
... print ' '.join(map(str, seq))
... seq2 = []
... for key, subgroup in itertools.groupby(seq):
... seq2 += [key, len(list(subgroup))]
... seq = seq2
...
김대근 comments:
오늘 실습하면서 is
라는 키워드가 많이 보였는데, 왠지 기분상으로 뭔가 애매한 느낌이 남아서 알아봤습니다. 일단은 사용할 때는 주의가 필요해 보입니다. 일단 "is"
동일한지를 검사하는거고 "=="
동등한 값인지를 검사하는 기능으로 보입니다.
또 중요한게 아래 처럼되네요. 257
부터는 is
하면 True
를 뱉지 않네요.
x = 1
(x is 1) is True
x = 100
(x is 100) is True
x = 256
(x is 256) is True
x = 257
(x is 257) is False
근데 pypy
에서는 257
넘어가더라도 동일하게 True
를 뱉습니다.
is None
이나 is not None
이나 singleton 객체
검사할 때 쓰면 되는 듯 보입니다. ㅋ
그리고 성능의 이점을 얻기는 힘들겠지만 ==
가 is
보다는 느립니다. is
는 동일한지를 검사하는거라 빠르고 ==
는 __eq__
매직메서드를 쓰면서 여러번 뭔가를 더 합니다.
x == y
는 결국 x.__eq__(y) and y.__eq__(x)
를 만족해야 하나 봅니다.
윤인성 comments:
인터넷을 보니 is 키워드를 사용하면 자료형 비교 또는 메모리 위치까지 검사한다고 하네요 'ㅁ'
256
으로 차이가 나는 것은 256이하
의 숫자와 이후의 숫자를 어떤 자료형으로 먹이는지가 컴파일러나 인터프리터에 따라서 다른 것 같군요...OTL....
또한 메모리 위치까지 검사해서
a = "a"
b = "a"
print(a is b)
print(a == b)
a = a * 100
b = b * 100
print(a is b)
print(a == b)
이 코드에서 아래의 is
는 False
가 뜨는군요 'ㅁ'