2.2.3 Source Code Encoding
파이썬 소스 파일에서는 ASCII 와는 다른 인코딩을 사용할 수 있다. 가장 좋은 방법은 소스 파일의 인코딩을 방법을 정의하는 특별한 주석을 추가하는 것이다.

# -*- coding: encoding -*-

이 선언이 되어 있으면, 소스 파일내의 모든 문자는 encoding 타입으로 인코딩된 문자로 다루어질 것이다. 그리고 선택된 인코딩 타입으로 부터 직접적으로 유니코드를 쓸 수 있다. 사용가능한 인코딩 리스트는 이곳을 참고하라.

예를들어, 유로화 심벌을을 포함하는 유니코드 문자를 쓰기위해서, 유로화 심벌의 서수값(ordinal value) 164 인 ISO-8859-15 인코딩을 사용할 수 있다. 다음 스크립트는 8364 (유로화 심벌에 해당하는 유니코드 값) 를 출력한다.

# -*- coding: iso-8859-15 -*-

currency = u"€"
print ord(currency)


3.1.2 Strings
스트링을 표현하기 위해서 ` 나 " 를 사용할 수 있다.
` 내에서 ` 문자를 표시하기 위해서는 \` 사용하고 " 문자를 표시하기 위해서는 그냥 " 쓰면 된다.
반대로 마찬가지.


4.2 for Statements

>>> # Measure some strings:
... a = ['cat', 'window', 'defenestrate']
>>> for x in a:
... print x, len(x)
...
cat 3
window 6
defenestrate 12

반복문 내에서 리스트 a 의 내용을 바꿀 필요가 있을 때는,
위와 같이 쓰면 문제가 생길 수 있다. 이 경우에는 다음과 같은 표현으로
리스트 a 의 copy 를 사용한다.

>>> for x in a[:]: # make a slice copy of the entire list
... if len(x) > 6: a.insert(0, x)
...
>>> a
['defenestrate', 'cat', 'window', 'defenestrate']

4.1.7 Default Argument Values

i = 5

def f(arg=i):
print arg

i = 6
f()

default value 의 값은 defining scope 의 function definition 때 evaluate 된다.
즉 위의 코드의 결과는 5 가 출력된다.

주의! : default value 는 오직 한번 evaluate 된다. 이것이 list, dictionary 혹은 클래스의 객체와 같이 mutable(내용이 변할 수 있는) object 가 default 가 되는 경우 영향을 미친다.
예를들어, 아래의 코드는

def f(a, L=[]):
L.append(a)
return L

print f(1)
print f(2)
print f(3)

다음과 같은 결과를 출력한다.

[1]
[1, 2]
[1, 2, 3]

만약 연속적인 호출에서 default 를 공유하고 싶지 않다면, 함수 정의를 다음과 같이 해야 한다.

def f(a, L=None):
if L is None:
L = []
L.append(a)
return L


반응형

설정

트랙백

댓글