Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Python2と3の互換性問題に立ち向かうときにまずやること

768 views

Published on

Python2 と 3の話

Published in: Engineering
  • Be the first to comment

  • Be the first to like this

Python2と3の互換性問題に立ち向かうときにまずやること

  1. 1. Python2と3の互換性問題に 立ち向かうときに まずやること @utgwkk
  2. 2. こんにちは
  3. 3. @utgwkk
  4. 4. 第39代(副)広報
  5. 5. (副)広報……?
  6. 6. 経緯がありました
  7. 7. Pythonを書いている
  8. 8. 自己紹介ここまで
  9. 9. 動的型付け言語
  10. 10. 機械学習・数値計算で よく使われる
  11. 11. Rubyと似てるって よく言われる
  12. 12. 分からなければ そういうイメージで
  13. 13. Pythonについて 調べてると 発生すること
  14. 14. 2と3ってのが あるらしいぞ
  15. 15. このコードは2でしか 動かないっぽいぞ
  16. 16. Python2と3の違い
  17. 17. 文字列型
  18. 18. Python2だと?
  19. 19. strとunicode
  20. 20. 8bit型文字列
  21. 21. 文字コード情報なし
  22. 22. デフォルトエンコーディング
  23. 23. ASCII
  24. 24. マルチバイト文字列に弱い
  25. 25. リソースを取得するたびに うまくエンコード/デコードしまく る
  26. 26. とてもつらい
  27. 27. Python3だと?
  28. 28. str(unicode)
  29. 29. 文字コード情報を保持
  30. 30. いい話
  31. 31. 以前までのstrは?
  32. 32. bytes型として現役
  33. 33. 組み込み関数の 返り値の型の変更
  34. 34. 一例
  35. 35. リスト→イテレータ
  36. 36. イテレータ?
  37. 37. 要素を1つずつ返す オブジェクト
  38. 38. リストより軽い
  39. 39. Pythonの典型的な for文の例
  40. 40. Python2だと?
  41. 41. for i in range(100):
  42. 42. 0~99までiを回す
  43. 43. range(100)って?
  44. 44. [0, 1, …, 99] という リストを返す
  45. 45. for i in range(10000000):
  46. 46. [0, 1, …, 9999999] というリストを返す
  47. 47. 10000000個の要素 を持ったリストが都度 作られる
  48. 48. 重すぎる
  49. 49. 私はただループを回 したいだけなんだ
  50. 50. for i in xrange(10000000):
  51. 51. 0, 1, …, 9999999を 順に渡すイテレータを 返す
  52. 52. 軽い
  53. 53. range いらなくない?
  54. 54. Python3だと?
  55. 55. for i in range(10000000):
  56. 56. 0, 1, …, 9999999を 順に渡すイテレータを 返す
  57. 57. いいですね
  58. 58. range がリストを返す のに依存する実装が バグりそう
  59. 59. range だけじゃない
  60. 60. 2でリストを返してい た組み込み関数
  61. 61. 3ではイテレータを返 すようになった
  62. 62. 標準ライブラリの 改名
  63. 63. urllib系が特に大きく 影響を受けた
  64. 64. 他にもいろいろ
  65. 65. 整数同士の割り算
  66. 66. 例外処理の構文
  67. 67. 後方互換性の破壊
  68. 68. 古いバージョンのことは切 り捨てればよいのでは?
  69. 69. そうもいかない
  70. 70. 我々は常に最新の バージョンのみを利用 できるわけではない
  71. 71. 時には古いバージョンの コードと付き合う 必要が生じてくる
  72. 72. Python2から3への 移行
  73. 73. 2to3使いましょう
  74. 74. http://docs.python.jp/3/library/2to3.html
  75. 75. $ 2to3 -w hoge.py
  76. 76. Python2のコードを 3のコードに 書き換えてくれる
  77. 77. 大抵は何とかなる
  78. 78. 何とかならない場合も あります
  79. 79. ライブラリの依存 ライブラリも Python3未対応
  80. 80. うまくやっていきましょ う
  81. 81. Python2と3で 互換性を維持
  82. 82. six使いましょう
  83. 83. $ pip install six
  84. 84. 2と3で変更のある ところをラップ
  85. 85. いい感じに互換性を 保つことができる
  86. 86. Python3から2へ ダウングレード
  87. 87. がんばってください
  88. 88. six使いましょう (再掲)
  89. 89. まとめ
  90. 90. あらゆるプロジェクトが Python3に完全に移行され れば解決
  91. 91. なかなかそうもいかないので いろいろな便利モジュールで うまく凌いでいきましょう
  92. 92. six使いましょう (再々掲)
  93. 93. ご清聴ありがとう ございました
  94. 94. 質問?

×