Types⁠)⁠」として提供しています。文字列や数値といった基本的なデータ型だけでなく,リストや辞書,集合(Set)型のような構造を持ったデータ型が組み込み型として用意されています。2.x世代の組み込み型には,言語としての一貫性を崩す仕様がいくつか存在しているのも事実です。そのような不整合の多くは,後付けの仕様追加が原因となっています。3000では,組み込み型の設計にメスが入り,より一貫性のある仕様に見直しが図られています。3000での変更点を概観したいと思います。3000では,文字列型に大きな変更が加えられます。文字列(str)型がUnicodeベースの型に変更されるのです。2.xまでは,Pythonには2種類の文字列型がありました。エンコードを考慮しない8ビット文字列としてのstr型と,Unicodeベースのunicode型です。3.0では,従来のstr型がunicode型に置き換わります。それに伴って,unicode型と,「⁠u"~"」というリテラル表記は廃止されます。標準の文字列型がUnicodeベースなったことにより,特に日本語のように複数エンコードを持つマルチバイト文字列の扱いに,多少注意が必要になります。ファイルやネットワーク経由の文字列データを元に文字列型データを生成する際には,常にエンコードを意識する必要が出てきます。EUC-JPエンコードで書かれたファイルを開き,読み込んだ結果をそのまま文字列型のデータに代入すると,たいてい例外が発生します。ファイルの内容を文字列に代入する時点で,Pythonのコーデックが文字列の妥当性チェックを行います。このとき,UTF-8として妥当でない文字列があると,エラーが発生するわけです。このようなことを避けるためには,codecsモジュールのopen()などを使って,読み込み時に明示的にエンコードを指定する必要があります。'euc-jp'))(ファイルの内容を表示)8ビットデータ列としてのbytes型エンコードを明示せず,マルチバイト文字列を8ビットのデータとして扱いたいときには,bytes型を使います。bytes型は2.xまでのstr型とほぼ同じ機能を提供している文字列型です。同時に,bytes型のリテラル表記として「b"~"」が追加されています。2.xまででは,str型とunicode型を連結することができました。連結をするとunicode型のデータを得ます。連結の過程でstr型からunicode型への暗黙の型変換が行われており,このときエンコードエラーが起こることがありました。暗黙に行われる型変換の最中にエラーがでるというのは,仕様として紛らわしいですし,あまり気持ちの良いものではありません。3.0では,標準のUnicode文字列と8ビットデータを扱うbytes型がまったく違う型として扱われます。そのため,'abc'+b'abc'のようにしてstr型とbytes型を連結できなくなっています。2つのオブジェクトを連結するためには,enocde()やdecode()メソッドを使って,明示的に型を合わせる必要があります。変更可能なbytearray型Pythonの文字列型は「変更不可能(immutable⁠)⁠」と呼ばれています。s[2]='c'のようにして,文字列の要素を直接変更することができません。Pythonの文字列型は8ビットクリーンなデータをストアできたため,バイナリデータの置き場所として利用されることがありました。テキストデータを扱う場合でも,インデックスやスライスを使ってデータを変更できた方が便利な場合があります。このような用途に利用するため,「⁠変更可能(mutable⁠)⁠」なバイト列を扱うためのデータ型としてbytearrayという型が追加されています。bytearrayにはリテラルはありません。str型やbytes型を元にして生成します。str型からbytearrayを生成するためには,エンコードを指定する必要があります。babytearray(b'abBCDEe')int型とlong型の統合,割り算に関する変更Pythonの仕様変更に関する提案を記載したPEPというものがあります。237という比較的古いPEPに記載された提案が採用されています。2つの数値型,int型とlong型の統合です。int型はCのlongに依存した数値型です。long型は後付けでPythonに追加された数値型で,メモリが許す限り大きな値を扱えます。3.0では,2.x世代のlong型に相当する型がint型に置き換わります。これにあわせて,2.x世代で利用されていた「L」を末尾に付けるlong型のリテラル表記は廃止されます。237が2001年に書かれていることからもわかるとおり,かなり以前から統合の提案がありました。後方互換性を崩すという理由のため,ずっと統合が見送られてきたのです。2.xまでは,int型同士の割り算は必ずint型を返していました。結果が小数点を含む数値となった場合は,内輪で一番近い整数を結果としていました。「1/2」の結果は「0」になります。3.0では,int型同士の割り算は必ずfloat型の数値を返します。従来通りint型を得たい場合には//という演算子を使います。Python,Ploneを使ったCMS/システム構築やコンサルティングが主な業務となっています。「みんなのPython」「TurboGears×Python」などの著書があります。日本Pythonユーザ会のほか,日本PostgreSQLユーザ会でも活動。2019」を開催しました。DAY1・DAY2の様子を注目セッションとともにお伝えします。LINEのエンジニア3名がイベントに先駆けて見どころを紹介します。コードの安全性・安定性を高める開発サイクル~テスト管理の効率を上げ,脆弱性診断を自動で行う~本連載では,連載「業務を改善する情報共有の仕掛け」を受けつつ,安全性・安定性を加えた開発サイクルについて考えていきます。若者世代から圧倒的な人気を誇るライブ配信&動画投稿コミュニティアプリ「MixChannel」(ミクチャ)の裏側(レコメンドシステムやサーバサイド開発など)について解説していきます。その他の連載CSS3アニメーションでつくるインターフェイス表現CSS3によるアニメーション表現を紹介していきます。その中でも,幅広い読者に応用してもらえるだろうインターフェイスを主なお題とします。MySQL道普請便り本連載では,MySQLを使ったアプリ開発・運用に関するノウハウをご紹介していきます。RecipeUbuntuの強力なデスクトップ機能を活用するための,いろいろなレシピをお届けします。JavaScriptセキュリティの基礎知識JavaScriptに関するセキュリティ上の問題はどこで発生し,どうすれば防ぐことができるのか?について解説していきます。〜システムをきちんと運用するための基礎知識システムは「作って終わり」ではなく,運用の中でさまざまな問題が発生します。問題の発生に備えて事前にどのような対応をしておくべきなのか,問題発生時に何をしなければならないのか,ポイントを解説していきます。きたみりゅうじの聞かせて珍プレーソフトウェア開発の現場で体験したトホホな失敗,思わずうなる珍プレーをきたみりゅうじ氏が四コママンガで紹介。Linuxのメンテナンスの傍ら,Linuxやオープンソースソフトと日々を過ごす著者が,その魅力とつきあい方を,エッセイ風味でお届けします。PRESS特別編集部員,さわやか笑顔のスーパーハカーはまちちゃんとネット大好き14歳わかばちゃんが,毎号,読者の皆さんから寄せられたおたよりを紹介します。皆さんの日頃の悩みにも答えちゃいますよ。]メールでのお知らせメールで次の案内をお送りしております。メールの配信を希望する方は,利用したい項目をチェックしてメールアドレスを入力し,[登録]ボタンをクリックしてください。UPDATES[ほぼ週間に1回]新刊メールマガジン[ほぼ週間に1回]電脳会議の各号案内[ほぼ1ヵ月半に1回]※変更する場合や停止する場合は,登録情報変更ページをご覧ください。※登録いただいたメールアドレスには,そのお知らせ以外,配信いたしません。Ltd.ページ内容の全部あるいは一部を無断で利用することを禁止します。個別にライセンスが設定されている記事等はそのライセンスに従います。