python2에서 string 타입에 대해서 decode('utf-8')를 잘 실행할 수 있지만, 

python3에서는 기본이 utf-8이기 때문에 굳이 decode를 사용할 필요가 없다. 따라서 decode 함수도 없다. 



>>> result = ""

>>> str(type(result))

"<class 'str'>"

>>> result.decode('utf-8')

Traceback (most recent call last):

  File "<stdin>", line 1, in <module>

AttributeError: 'str' object has no attribute 'decode'

>>>


https://docs.python.org/3/howto/unicode.html


The default encoding for Python source code is UTF-8, so you can simply include a Unicode character in a string literal:





또한 None도 생겼다.


python2에서는 kazoo를 통해서 얻은 값은 empty string이였는데.. python3에서는 None타입을 사용했다.

flask에서는 다음과 같이 사용했다.

{% if node.data == None %}
{% else %}
<span style="word-wrap: break-word">
{{node.data}}
</span>
{% endif %}




그리고 




파이썬2에서 딕셔너리의 iteritems()는 사라지고 items()로 대체되었다.





message = '\n'.join("%s: %s" % (key, val) for (key, val) in (sorted(rep.items())))







그 외


https://wiki.python.org/moin/Python3.0#Built-In_Changes를 참고한다.





파이썬2에서 3로 전환하면서.. 발생했는데..


flask에서는 아래와 같은 코드는 에러가 발생한다 (TypeError: 'NoneType' object is not subscriptable)

if request.json['head_commit'] is not None:


flask 0.10부터 json 프로퍼티는 None을 리턴한다. 2->3 버전 이슈는 아니고 라이브러리 이슈가 있다.


if request.get_json('head_commit') is not None:


Posted by '김용환'
,