Python Language チュートリアル
Python言語を使い始める
サーチ…
備考
Pythonは広く使われているプログラミング言語です。それは:
ハイレベル :Pythonはメモリ管理などの低レベル操作を自動化します。プログラマの制御が少ししかなくても、コードの可読性や最小限のコード表現など、多くの利点があります。
汎用 :Pythonはすべてのコンテキストや環境で使用できるように作られています。非汎用言語の例はPHPです。これは、特にサーバー側のWeb開発スクリプト言語として設計されています。対照的に、Python は 、サーバー側のWeb開発だけでなく、デスクトップアプリケーションの構築にも使用できます。
動的型指定 :Pythonのすべての変数は、あらゆるタイプのデータを参照できます。単一の式は、異なる時間に異なるタイプのデータに評価されることがあります。そのため、以下のコードが可能です:
if something: x = 1 else: x = 'this is a string' print(x)
強く型付けされた :プログラムの実行中に、あなたが作業しているデータの種類と互換性のないものは実行できません。たとえば、文字列から数値への隠れた変換はありません。数字から作られた文字列は、明示的に変換しない限り数値として扱われません:
1 + '1' # raises an error 1 + int('1') # results with 2
Beginner friendly :) :Pythonの構文と構造は非常に直感的です。それは高レベルであり、小規模および大規模の両方で明確なプログラムを書くことができるようにするための構造を提供します。 Pythonは、オブジェクト指向、命令型プログラミング、関数型プログラミング、手続き型プログラミングなど、複数のプログラミングパラダイムをサポートしています。それには、大規模で包括的な標準ライブラリとインストールが簡単なサードパーティのライブラリが多数あります。
その設計原則はThe Zen of Pythonで概説されています。
現在、いくつかの大きな違いがあるPythonの2つの主要なリリースブランチがあります。 Python 2.xは従来のバージョンですが、それでもなお広く使われています。 Python 3.xでは、機能の重複を減らすことを目的とした一連の後方互換性のない変更が行われています。どのバージョンが最適かを判断するには、 この記事を参照してください 。
公式のPythonのドキュメントは包括的かつ有用なリソースであり、Pythonのすべてのバージョンのドキュメントと、始めるためのチュートリアルも含まれています。
一般的にCPythonと呼ばれるPython.orgによって提供される言語の公式な実装と、他のランタイムプラットフォームでの言語のいくつかの代替実装があります。 IronPython (.NETプラットフォーム上でPythonを実行)、 Jython (Javaランタイム上)、 PyPy (Pythonを独自のサブセットに実装)などがあります。
バージョン
Python 3.x
バージョン | 発売日 |
---|---|
[3.7] | 2017-05-08 |
3.6 | 2016-12-23 |
3.5 | 2015-09-13 |
3.4 | 2014-03-17 |
3.3 | 2012-09-29 |
3.2 | 2011年02月20日 |
3.1 | 2009-06-26 |
3.0 | 2008-12-03 |
Python 2.x
バージョン | 発売日 |
---|---|
2.7 | 2010-07-03 |
2.6 | 2008年10月2日 |
2.5 | 2006-09-19 |
2.4 | 2004-11-30 |
2.3 | 2003年7月29日 |
2.2 | 2001年12月21日 |
2.1 | 2001-04-15 |
2.0 | 2000-10-16 |
入門
Pythonは、汎用プログラミングのために広く使用されている高度なプログラミング言語で、Guido van Rossumによって1991年に最初にリリースされました。Pythonは動的型システムと自動メモリ管理を備え、オブジェクト指向、関数型プログラミング、および手続き型スタイルが含まれます。それは大きくて包括的な標準ライブラリを持っています。
Pythonの2つのメジャーバージョンが現在使用されています:
- Python 3.xは現在のバージョンであり、開発中です。
- Python 2.xは従来のバージョンであり、2020年まではセキュリティアップデートのみを受け取ります。新しい機能は実装されません。多くのプロジェクトでPython 2が使用されていますが、Python 3への移行は容易になっています。
あなたは、ダウンロードやPythonのいずれかのバージョンをインストールすることができ、ここで 。 Python 3とPython 2の比較については、 Python 3とPython 2を参照してください。さらに、サードパーティの一部は、一般的に使用されるライブラリやその他の機能を追加して、数学、データ解析、科学的使用などの一般的な使用例の設定を容易にするPythonの再パッケージ版を提供しています。 公式サイトのリストを参照してください。
Pythonがインストールされているかどうかを確認する
Pythonが正しくインストールされたことを確認するには、お好みの端末で次のコマンドを実行することで確認できます(Windows OSを使用している場合は、コマンドプロンプトで使用する前に環境変数にpythonのパスを追加する必要があります)。
$ python --version
Python 3がインストールされていて、それがデフォルトのバージョンである場合(詳細についてはトラブルシューティングを参照)、次のように表示されます。
$ python --version
Python 3.6.0
Python 2がインストールされていて、これがデフォルトのバージョン(詳細はトラブルシューティングを参照)であれば、次のように表示されます。
$ python --version
Python 2.7.13
Python 3をインストールしていて、 $ python --version
がPython 2バージョンを出力している場合、Python 2もインストールされています。これはMacOSや多くのLinuxディストリビューションでよく見られます。 Python 3インタプリタを明示的に使用するには、代わりに$ python3
を使用します。
こんにちは、IDLEを使ったPythonの世界
IDLEはPythonのためのシンプルなエディタで、Pythonにバンドルされています。
IDLEでHello、Worldプログラムを作成する方法
- 選択したシステムでIDLEを開きます。
- 古いバージョンのWindowsでは、[Windows]メニューの[
All Programs
]にあります。 - Windows 8以降では、
IDLE
検索するか、システムに存在するアプリで見つけます。 - Unixベースのシステム(Macを含む)では、
$ idle python_file.py
入力してシェルから開くことができます。
- 古いバージョンのWindowsでは、[Windows]メニューの[
- 上にオプションがあるシェルが開きます。
シェルには、3つの直角括弧のプロンプトがあります。
>>>
次に、プロンプトに次のコードを記述します。
>>> print("Hello, World")
Enterを押します。
>>> print("Hello, World")
Hello, World
Hello World Pythonファイル
次の行を含む新しいファイルhello.py
を作成します。
print('Hello, World')
Python 2では、次のimport
文を使用してPython 3のprint
関数を使用できます。
from __future__ import print_function
Python 2には、 ここで説明するように、 __future__
モジュールを使用してPython 3からオプションでインポートできるいくつかの機能があります。
Python 2を使用している場合は、以下の行を入力することもできます。これはPython 3では有効でないため、バージョン間のコード互換性が低下するため、推奨されません。
print 'Hello, World'
端末で、 hello.py
ファイルがあるディレクトリに移動します。
python hello.py
と入力し、 Enterキーを押します。
$ python hello.py
Hello, World
Hello, World
がコンソールに表示されるはずです。
hello.py
をファイルへのパスに置き換えることもできます。たとえば、ホームディレクトリにファイルがあり、Linuxでユーザーが "user"の場合は、 python /home/user/hello.py
ます。
インタラクティブなPythonシェルを起動する
python
コマンドを端末で実行(実行) python
、対話的なPythonシェルが表示されます。これは、 PythonインタプリタまたはREPL( 'Read Evaluate Print Loop'用)とも呼ばれます。
$ python
Python 2.7.12 (default, Jun 28 2016, 08:46:01)
[GCC 6.1.1 20160602] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> print 'Hello, World'
Hello, World
>>>
あなたの端末からPython 3を実行するには、 python3
コマンドを実行します。
$ python3
Python 3.6.0 (default, Jan 13 2017, 00:00:00)
[GCC 6.1.1 20160602] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> print('Hello, World')
Hello, World
>>>
あるいは、対話型プロンプトを起動し、 python -i <file.py>
ファイルをロードします。
コマンドラインで次のコマンドを実行します。
$ python -i hello.py
"Hello World"
>>>
Pythonシェルを閉じるには複数の方法があります:
>>> exit()
または
>>> quit()
あるいは、 CTRL + Dはシェルを閉じて、ターミナルのコマンドラインに戻します。
Interpreterシェルの内部にある間に、入力中にコマンドをキャンセルしてクリーンなコマンドプロンプトに戻るには、 CTRL + Cを使用します。
インタラクティブなPythonシェルをオンラインで試してみてください 。
その他のオンラインシェル
さまざまなウェブサイトがPythonシェルへのオンラインアクセスを提供しています。
オンラインシェルは、次の目的に役立ちます。
- Pythonのインストールがないマシン(スマートフォン、タブレットなど)から小さなコードスニペットを実行します。
- 基本的なPythonを学び、教える。
- オンラインジャッジの問題を解決する。
例:
免責事項:文書作成者は以下のリソースには関係しません。
- https://www.python.org/shell/ - 公式のPythonウェブサイトが主催するオンラインのPythonシェル。
- https://ideone.com/ - コードスニペットの動作を説明するために、ネット上で広く使用されています。
- https://repl.it/languages/python3 - 強力でシンプルなオンラインコンパイラ、IDE、インタプリタ。 Pythonでコードを作成、コンパイル、実行します。
- https://www.tutorialspoint.com/execute_python_online.php - フル機能のUNIXシェルと、使いやすいプロジェクトエクスプローラです。
- http://rextester.com/l/python3_online_compiler - 実行時間を表示するシンプルで使いやすいIDE
コマンドを文字列として実行する
Pythonは、任意のコードをシェルの文字列として渡すことができます:
$ python -c 'print("Hello, World")'
Hello, World
これは、シェル内のスクリプトの結果を連結する場合に便利です。
シェルとそれを超えて
パッケージ管理 - PythonパッケージをインストールするためのPyPA推奨ツールはPIPです。インストールするには、コマンドラインでpip install <the package name>
実行します。たとえば、 pip install numpy
。 (注意:Windowsでは、PATH環境変数にpipを追加する必要があります。これを避けるには、 python -m pip install <the package name>
使用してpython -m pip install <the package name>
)。
シェル - これまで、Pythonのネイティブ対話シェルを使用してコードを実行するさまざまな方法について説明しました。シェルはコードをリアルタイムで実験するためにPythonの解釈力を使用します。代替のシェルには、 IDLE (事前にバンドルされたGUI)、 IPython(インタラクティブなエクスペリエンスを拡張するために知られている)などがあります。
プログラム - 長期保存のために、コンテンツを.pyファイルに保存し、シェル、 IDE ( PyCharmなど)、 Jupyterノートブックなどの外部ツールを使用してスクリプトやプログラムとして編集/実行することができます。ただし、ここで説明する方法は、開始するには十分です。
Pythonチュートリアルでは、Pythonコードをステップ実行することで、プログラムの流れを視覚化したり、プログラムのどこが間違っているかを理解したりすることができます。
PEP8は、Pythonコードをフォーマットするためのガイドラインを定義しています。コードの書式を整えることは重要なので、コードの内容をすばやく読み取ることができます。
変数の作成と値の割り当て
Pythonで変数を作成するには、変数名を指定して値を代入するだけです。
<variable name> = <value>
Pythonは=
を使って変数に値を代入します。事前に変数を宣言する(またはデータ型を代入する)必要はありません。変数に値を代入すると、変数が宣言され、その値で初期化されます。変数に初期値を代入せずに宣言する方法はありません。
# Integer
a = 2
print(a)
# Output: 2
# Integer
b = 9223372036854775807
print(b)
# Output: 9223372036854775807
# Floating point
pi = 3.14
print(pi)
# Output: 3.14
# String
c = 'A'
print(c)
# Output: A
# String
name = 'John Doe'
print(name)
# Output: John Doe
# Boolean
q = True
print(q)
# Output: True
# Empty value or null data type
x = None
print(x)
# Output: None
変数の代入は左から右に作用します。したがって、次のようにすると構文エラーが発生します。
0 = x
=> Output: SyntaxError: can't assign to literal
Pythonのキーワードを有効な変数名として使用することはできません。あなたはキーワードのリストを以下の方法で見ることができます:
import keyword
print(keyword.kwlist)
変数の命名規則:
- 変数名は、文字またはアンダースコアで始まる必要があります。
x = True # valid
_y = True # valid
9x = False # starts with numeral
=> SyntaxError: invalid syntax
$y = False # starts with symbol
=> SyntaxError: invalid syntax
- 変数名の残りの部分は、文字、数字、アンダースコアで構成されています。
has_0_in_it = "Still Valid"
- 名前は大文字と小文字が区別さ
x = 9
y = X*5
=>NameError: name 'X' is not defined
Pythonで変数を宣言するときにデータ型を指定する必要はありませんが、変数に必要な領域をメモリに割り当てると、Pythonインタプリタは自動的に最適な組み込み型を選択します。
a = 2
print(type(a))
# Output: <type 'int'>
b = 9223372036854775807
print(type(b))
# Output: <type 'int'>
pi = 3.14
print(type(pi))
# Output: <type 'float'>
c = 'A'
print(type(c))
# Output: <type 'str'>
name = 'John Doe'
print(type(name))
# Output: <type 'str'>
q = True
print(type(q))
# Output: <type 'bool'>
x = None
print(type(x))
# Output: <type 'NoneType'>
今、あなたは割り当ての基礎を知っていますので、このような微妙なところでPythonの代入について教えてください。
あなたが使用している場合=
代入操作を行うには、何の左側にあります=
右側のオブジェクトの名前です。最後に、何=
行うことは左の名前を右上のオブジェクトの参照を割り当てるです。
あれは:
a_name = an_object # "a_name" is now a name for the reference to the object "an_object"
私たちが選ぶのであれば、上記の多くの割り当ての例から、 pi = 3.14
、そしてpi
オブジェクトに対して(オブジェクトが複数の名前を持つことができるので、名前ではなく)名前である3.14
。あなたが以下の何かを理解していないなら、この点に戻り、これをもう一度読んでください!また、 このことをよりよく理解するために見ることができます。
1行に複数の変数に複数の値を割り当てることができます。 =
演算子の左右に同じ数の引数が必要であることに注意してください。
a, b, c = 1, 2, 3
print(a, b, c)
# Output: 1 2 3
a, b, c = 1, 2
=> Traceback (most recent call last):
=> File "name.py", line N, in <module>
=> a, b, c = 1, 2
=> ValueError: need more than 2 values to unpack
a, b = 1, 2, 3
=> Traceback (most recent call last):
=> File "name.py", line N, in <module>
=> a, b = 1, 2, 3
=> ValueError: too many values to unpack
最後の例のエラーは、残りの値を同数の任意の変数に代入することで取り除くことができます。このダミー変数には任意の名前を付けることができますが、不要な値を割り当てるためにアンダースコア( _
)を使用するのが一般的です。
a, b, _ = 1, 2, 3
print(a, b)
# Output: 1, 2
_の数と残りの数の数は等しくなければならないことに注意してください。それ以外の場合は、上記のように '値をアンパックするには値が多すぎます'がスローされます。
a, b, _ = 1,2,3,4
=>Traceback (most recent call last):
=>File "name.py", line N, in <module>
=>a, b, _ = 1,2,3,4
=>ValueError: too many values to unpack (expected 3)
また、複数の変数に1つの値を同時に割り当てることもできます。
a = b = c = 1
print(a, b, c)
# Output: 1 1 1
このようなカスケード割り当てを使用する場合、 b
、 b
、 c
3つの変数a
すべてメモリ内の同じオブジェクトを参照することが重要です。値が1のint
オブジェクト。つまり、 a
、 b
、およびc
は3つの異なる名前同じintオブジェクトに与えられます。後で別のオブジェクトを割り当てると、期待通りに他のオブジェクトが変更されません。
a = b = c = 1 # all three names a, b and c refer to same int object with value 1
print(a, b, c)
# Output: 1 1 1
b = 2 # b now refers to another int object, one with a value of 2
print(a, b, c)
# Output: 1 2 1 # so output is as expected.
上記は、変更可能な型( int
、 string
、 tuple
など)の場合と同じように、変更可能な型( list
、 dict
など)にも当てはまります。
x = y = [7, 8, 9] # x and y refer to the same list object just created, [7, 8, 9]
x = [13, 8, 9] # x now refers to a different list object just created, [13, 8, 9]
print(y) # y still refers to the list it was first assigned
# Output: [7, 8, 9]
ここまでは順調ですね。カスケード割り当てが変更可能な型に使用されているときに、オブジェクトを変更することになると(上で行った別のオブジェクトに名前を割り当てるのとは対照的に)、状況は少し異なります。下を見て、あなたはそれを最初に見るでしょう:
x = y = [7, 8, 9] # x and y are two different names for the same list object just created, [7, 8, 9]
x[0] = 13 # we are updating the value of the list [7, 8, 9] through one of its names, x in this case
print(y) # printing the value of the list using its other name
# Output: [13, 8, 9] # hence, naturally the change is reflected
入れ子リストはPythonでも有効です。つまり、リストに要素として別のリストを含めることができます。
x = [1, 2, [3, 4, 5], 6, 7] # this is nested list
print x[2]
# Output: [3, 4, 5]
print x[2][1]
# Output: 4
最後に、Pythonの変数は、最初に定義したのと同じ型をとどめる必要はありません。新しい値を変数に代入する場合は、その値が異なる型であっても単純に=
を使用できます。
a = 2
print(a)
# Output: 2
a = "New value"
print(a)
# Output: New value
これが気になる場合は、 =
の左側にあるものはオブジェクトの名前に過ぎないという事実について考えてみてください。まず、あなたが呼び出すint
値2を持つオブジェクト、あなたはあなたの心を変更し、名前与えることを決定しa
a
にstring
値「新しい価値」を持つ、オブジェクト。シンプル、そう?
ユーザー入力
インタラクティブ入力
ユーザからの入力を取得するには、 input
関数を使用しinput
( 注意 :Python 2.xでは、代わりにraw_input
と呼ばれますが、Python 2.xでは完全に異なる独自のバージョンのinput
があります)。
name = raw_input("What is your name? ")
# Out: What is your name? _
セキュリティ備考 Python2で
input()
を使用しないでください -input()
されたテキストはPythonの式(Python3のeval(input())
と同じように評価されます。この機能を使用するリスクの詳細については、 この記事を参照してください。
name = input("What is your name? ")
# Out: What is your name? _
この例の残りの部分では、Python 3の構文を使用します。
この関数は文字列引数を取ります。文字列引数はプロンプトとして表示し、文字列を返します。上記のコードは、ユーザが入力を待つプロンプトを提供します。
name = input("What is your name? ")
# Out: What is your name?
ユーザーが「Bob」と入力してEnterキーを押すと、変数name
が文字列"Bob"
割り当てられます。
name = input("What is your name? ")
# Out: What is your name? Bob
print(name)
# Out: Bob
input
は常にstr
型であることに注意してください。これは、ユーザーが数値を入力したい場合に重要です。したがって、数値として使用する前にstr
を変換する必要がありstr
:
x = input("Write a number:")
# Out: Write a number: 10
x / 2
# Out: TypeError: unsupported operand type(s) for /: 'str' and 'int'
float(x) / 2
# Out: 5.0
注意: try
/ except
ブロックを使用して、ユーザーの入力を処理する際に例外をキャッチすることをお勧めします。例えば、あなたのコードがraw_input
をint
raw_input
にキャストraw_input
うとしていて、ユーザが書き込むものがキャストできないValueError
、 ValueError
ます。
IDLE - Python GUI
IDLEはPythonの統合開発環境であり、コマンドラインに代わるものです。名前が示すように、IDLEは新しいコードの開発やPythonの学習に非常に役立ちます。 WindowsではこれがPythonインタプリタに付属していますが、他のオペレーティングシステムでは、パッケージマネージャを使用してインストールする必要があります。
IDLEの主な目的は次のとおりです。
- 構文の強調表示、自動補完、およびスマートインデント付きのマルチウィンドウテキストエディタ
- シンタックスハイライト付きのPythonシェル
- ステッピング、永続ブレークポイント、およびコールスタック可視性を備えた統合デバッガ
- 自動インデント(初心者がPythonのインデントについて学ぶのに便利)
- Pythonプログラムを.pyファイルとして保存して実行し、後でIDLEを使用してそれらを編集します。
IDLEでは、 F5
かrun Python Shell
をrun Python Shell
てインタプリタを起動します。 IDLEを使用すると、ユーザーが書き込むときにコードが解釈されるため、新しいユーザーにとってより優れた学習環境になります。
代替案がたくさんあることに注意してください。たとえば、 このディスカッションやこのリストを参照してください。
トラブルシューティング
Windows
Windowsの場合、デフォルトのコマンドは
python
です。あなたが受け取る場合は"'python' is not recognized"
エラーが、最も可能性の高い原因は、Pythonの場所は、お使いのシステムの中にはないということですPATH
環境変数。これは、[マイコンピュータ]を右クリックして[プロパティ]を選択するか、[コントロールパネル]から[システム]に移動してアクセスできます。 「高度なシステム設定」をクリックし、次に「環境変数...」をクリックします。PATH
変数を編集してPythonインストールのディレクトリとScriptフォルダ(通常はC:\Python27;C:\Python27\Scripts
)をC:\Python27;C:\Python27\Scripts
ます。これには管理者特権が必要であり、再起動が必要な場合があります。同じマシン上で複数のバージョンのPythonを使用する場合、解決方法は
python.exe
ファイルの名前を変更することです。たとえば、あるバージョンのpython27.exe
をpython27
すると、python27
はそのバージョンのPythonコマンドになります。また、Python Launcher for Windowsを使用することもできます。これはインストーラから利用でき、デフォルトで表示されます。
python[xy]
代わりにpy -[xy]
を使って実行するPythonのバージョンを選択することができます。最新のバージョンのPython 2を使用するには、py -2
でスクリプトを実行し、py -3
スクリプトを実行して最新のバージョンのPython 3を実行します。
Debian / Ubuntu / MacOS
このセクションでは、
python
実行可能ファイルの場所がPATH
環境変数に追加されていることを前提としています。Debian / Ubuntu / MacOSを使用している場合は、端末を開いて、Python 2.xでは
python
、Python 3.xではpython3
します。入力し
which python
Pythonインタプリタが使用されるかを確認します。
アーチLinux
アーチのLinux(および子孫)上のデフォルトのPythonは、Python 3であるので、使用
python
かpython3
Pythonの3.xおよび用python2
のPython 2.xの
他のシステム
Python 3は
python3
代わりにpython
にバインドされることがあります。 Python 2がインストールされているこれらのシステムでPython 2を使用するには、python2
を使用できます。
データ型
ビルトインタイプ
ブール
bool
: True
またはFalse
ブール値。論理のような操作and
、 or
、 not
ブール値上で実行することができます。
x or y # if x is False then y otherwise x
x and y # if x is False then x otherwise y
not x # if x is True then False, otherwise True
Python 2.xとPython 3.xでは、booleanもint
です。 bool
型はint
型のサブクラスであり、 True
およびFalse
はその唯一のインスタンスです。
issubclass(bool, int) # True
isinstance(True, bool) # True
isinstance(False, bool) # True
ブール値が算術演算で使用される場合、整数値( True
およびFalse
場合は1
と0
)が整数結果を返すために使用されます。
True + False == 1 # 1 + 0 == 1
True * True == 1 # 1 * 1 == 1
数字
int
:整数a = 2 b = 100 c = 123456789 d = 38563846326424324
Pythonの整数は任意のサイズです。
注意:Pythonの古いバージョンでは、
long
型が利用可能で、これはint
とは異なります。 2つは統合されています。float
:浮動小数点数。精度は実装とシステムアーキテクチャに依存しますが、CPythonではfloat
データ型がC doubleに相当します。a = 2.0 b = 100.e0 c = 123456789.e1
complex
:複素数a = 2 + 1j b = 100 + 10j
<
、 <=
、 >
および>=
演算子は、オペランドが複素数である場合にTypeError
例外をTypeError
ます。
文字列
-
str
: ユニコード文字列 。'hello'
のタイプ -
bytes
: バイト文字列 。b'hello'
のタイプは、
-
str
: バイト文字列 。'hello'
のタイプ -
bytes
:str
同義語 -
unicode
: ユニコード文字列 。u'hello'
のタイプは、
配列とコレクション
Pythonは、順序付けされたシーケンスと順序付けられていないコレクション( set
やdict
)を区別します。
文字列(
str
、bytes
、unicode
)はシーケンスですreversed
:reversed
関数str
reversed
a = reversed('hello')
tuple
:任意のタイプのn
値の順序付けられたコレクション(n >= 0
)。a = (1, 2, 3) b = ('a', 1, 'python', (1, 2)) b[2] = 'something else' # returns a TypeError
インデックス作成をサポートします。不変;すべてのメンバーがハッシュ可能な場合はハッシュ可能
list
:n
値の順序付けられたコレクション(n >= 0
)a = [1, 2, 3] b = ['a', 1, 'python', (1, 2), [1, 2]] b[2] = 'something else' # allowed
ハッシュ可能ではありません。変更可能です。
set
:一意の値の順序付けられていないコレクション。アイテムはハッシュ可能でなければなりません。a = {1, 2, 'a'}
dict
:ユニークなキーと値のペアの順序付けられていないコレクション。キーはハッシュ可能でなければなりません。a = {1: 'one', 2: 'two'} b = {'a': [1, 2, 3], 'b': 'a string'}
オブジェクトは、それが(それが必要その寿命の間に変化しないハッシュ値を有する場合、ハッシュ可能である
__hash__()
メソッド)を、そして(それが必要と他のオブジェクトと比較することができる__eq__()
メソッド)。等価性を比較するハッシュ可能オブジェクトは、同じハッシュ値を持つ必要があります。
組み込み定数
組み込みデータ型に関連して、ビルトイン名前空間には少数の組み込み定数があります。
-
True
:組み込み型bool
の真の値 -
False
:組み込み型bool
のfalse値 -
None
:値が存在しないことを通知するために使用されるシングルトンオブジェクト。 -
Ellipsis
記号または...
:Python3 +の中核となる場所で使用され、配列表記法の一部としてPython2.7 +での使用が制限されています。numpy
やそれに関連するパッケージはこれを配列の 'すべてを含む'参照として使用します。 -
NotImplemented
:特別なメソッドが特定の引数をサポートしていないことをPythonに示すために使用されるシングルトンNotImplemented
は利用可能な場合には代替メソッドを試します。
a = None # No value will be assigned. Any valid datatype can be assigned later
None
任意の自然順序付けがありません。順序比較演算子( <
、 <=
、 >=
、 >
)を使用すると、これ以上サポートされず、 TypeError
ます。
None
は常に任意の数値より小さくなります( None < -32
はTrue
評価されTrue
)。
変数の型のテスト
Pythonでは、組み込みの関数type
を使ってオブジェクトのデータ型を調べることができます。
a = '123'
print(type(a))
# Out: <class 'str'>
b = 123
print(type(b))
# Out: <class 'int'>
条件文では、 isinstance
をisinstance
てデータ型をテストすることができます。しかし、通常、変数の型に依存することは推奨されません。
i = 7
if isinstance(i, int):
i += 1
elif isinstance(i, str):
i = int(i)
i += 1
type()
とisinstance()
違いについては、Pythonのisinstanceとtypeの違いを参照してください。
何かがNoneType
かどうかをテストするには:
x = None
if x is None:
print('Not a surprise, I just defined x as None.')
データ型間の変換
明示的なデータ型変換を実行できます。
たとえば、 '123'はstr
型であり、 int
関数を使用して整数に変換できます。
a = '123'
b = int(a)
'123.456'のような浮動小数点文字列からの変換は、 float
関数を使用して行うことができます。
a = '123.456'
b = float(a)
c = int(a) # ValueError: invalid literal for int() with base 10: '123.456'
d = int(b) # 123
シーケンスまたはコレクションのタイプを変換することもできます
a = 'hello'
list(a) # ['h', 'e', 'l', 'l', 'o']
set(a) # {'o', 'e', 'l', 'h'}
tuple(a) # ('h', 'e', 'l', 'l', 'o')
リテラルの定義における明示的な文字列型
引用符のすぐ前に1文字のラベルを付けると、どのタイプの文字列を定義したいのかを知ることができます。
-
b'foo bar'
:Python 3の結果bytes
、Python 2のstr
-
u'foo bar'
:Python 3の結果str
、Python 2のunicode
-
'foo bar'
:結果str
-
r'foo bar'
:生の文字列と呼ばれる結果。エスケープする特殊文字は必要ありません。入力したとおりにすべてがそのまま引き継がれます。
normal = 'foo\nbar' # foo
# bar
escaped = 'foo\\nbar' # foo\nbar
raw = r'foo\nbar' # foo\nbar
変更可能および変更不可能なデータ型
変更可能なオブジェクトは、 変更可能と呼ばれます。たとえば、ある関数にリストを渡すと、リストを変更することができます。
def f(m):
m.append(3) # adds a number to the list. This is a mutation.
x = [1, 2]
f(x)
x == [1, 2] # False now, since an item was added to the list
どのような方法でも変更できないオブジェクトは不変と呼ばれます。たとえば、整数を変更する方法がないため、整数は不変です。
def bar():
x = (1, 2)
g(x)
x == (1, 2) # Will always be True, since no function can change the object (1, 2)
変数自体は変更可能であるため、 変数 x
再割当てすることができますが、これはx
が以前に指し示したオブジェクトを変更するものではありません。 x
は新しいオブジェクトを指し示すだけでした。
インスタンスが変更可能なデータ型は 、 変更可能なデータ型と呼ばれ、不変のオブジェクトおよびデータ型も同様です。
不変データ型の例:
-
int
、long
、float
、complex
-
str
-
bytes
-
tuple
-
frozenset
可変データ型の例:
-
bytearray
-
list
-
set
-
dict
組み込みのモジュールと関数
モジュールは、Pythonの定義と文を含むファイルです。関数は、あるロジックを実行するコードです。
>>> pow(2,3) #8
Pythonの組み込み関数を調べるには、 dir().
使うことができますdir().
引数なしで呼び出された場合は、現在のスコープ内の名前を返します。そうでない場合は、指定されたオブジェクトの属性とその属性から到達可能な属性を含む名前のアルファベット順リストを返します。
>>> dir(__builtins__)
[
'ArithmeticError',
'AssertionError',
'AttributeError',
'BaseException',
'BufferError',
'BytesWarning',
'DeprecationWarning',
'EOFError',
'Ellipsis',
'EnvironmentError',
'Exception',
'False',
'FloatingPointError',
'FutureWarning',
'GeneratorExit',
'IOError',
'ImportError',
'ImportWarning',
'IndentationError',
'IndexError',
'KeyError',
'KeyboardInterrupt',
'LookupError',
'MemoryError',
'NameError',
'None',
'NotImplemented',
'NotImplementedError',
'OSError',
'OverflowError',
'PendingDeprecationWarning',
'ReferenceError',
'RuntimeError',
'RuntimeWarning',
'StandardError',
'StopIteration',
'SyntaxError',
'SyntaxWarning',
'SystemError',
'SystemExit',
'TabError',
'True',
'TypeError',
'UnboundLocalError',
'UnicodeDecodeError',
'UnicodeEncodeError',
'UnicodeError',
'UnicodeTranslateError',
'UnicodeWarning',
'UserWarning',
'ValueError',
'Warning',
'ZeroDivisionError',
'__debug__',
'__doc__',
'__import__',
'__name__',
'__package__',
'abs',
'all',
'any',
'apply',
'basestring',
'bin',
'bool',
'buffer',
'bytearray',
'bytes',
'callable',
'chr',
'classmethod',
'cmp',
'coerce',
'compile',
'complex',
'copyright',
'credits',
'delattr',
'dict',
'dir',
'divmod',
'enumerate',
'eval',
'execfile',
'exit',
'file',
'filter',
'float',
'format',
'frozenset',
'getattr',
'globals',
'hasattr',
'hash',
'help',
'hex',
'id',
'input',
'int',
'intern',
'isinstance',
'issubclass',
'iter',
'len',
'license',
'list',
'locals',
'long',
'map',
'max',
'memoryview',
'min',
'next',
'object',
'oct',
'open',
'ord',
'pow',
'print',
'property',
'quit',
'range',
'raw_input',
'reduce',
'reload',
'repr',
'reversed',
'round',
'set',
'setattr',
'slice',
'sorted',
'staticmethod',
'str',
'sum',
'super',
'tuple',
'type',
'unichr',
'unicode',
'vars',
'xrange',
'zip'
]
関数の機能を知るために、組み込みの関数help
使用することができます。
>>> help(max)
Help on built-in function max in module __builtin__:
max(...)
max(iterable[, key=func]) -> value
max(a, b, c, ...[, key=func]) -> value
With a single iterable argument, return its largest item.
With two or more arguments, return the largest argument.
組み込みのモジュールには特別な機能が含まれています。例えば、 math
平方根を求めるには、 math
モジュールを含める必要があります。
>>> import math
>>> math.sqrt(16) # 4.0
モジュール内のすべての関数を知るために、関数リストを変数に代入して変数を出力することができます。
>>> import math
>>> dir(math)
['__doc__', '__name__', '__package__', 'acos', 'acosh',
'asin', 'asinh', 'atan', 'atan2', 'atanh', 'ceil', 'copysign',
'cos', 'cosh', 'degrees', 'e', 'erf', 'erfc', 'exp', 'expm1',
'fabs', 'factorial', 'floor', 'fmod', 'frexp', 'fsum', 'gamma',
'hypot', 'isinf', 'isnan', 'ldexp', 'lgamma', 'log', 'log10',
'log1p', 'modf', 'pi', 'pow', 'radians', 'sin', 'sinh', 'sqrt',
'tan', 'tanh', 'trunc']
__doc__
は、関数にいくつかのドキュメントを提供するのに便利だと思われます
>>> math.__doc__
'This module is always available. It provides access to the\nmathematical
functions defined by the C standard.'
機能に加えて、ドキュメントもモジュールで提供することができます。したがって、 helloWorld.py
という名前のファイルがある場合は、 helloWorld.py
ようにします。
"""This is the module docstring."""
def sayHello():
"""This is the function docstring."""
return 'Hello World'
次のようにdocstringにアクセスできます:
>>> import helloWorld
>>> helloWorld.__doc__
'This is the module docstring.'
>>> helloWorld.sayHello.__doc__
'This is the function docstring.'
- 任意のユーザ定義型、その属性、そのクラスの属性、およびそのクラスの基本クラスの属性を再帰的に検索するには、dir()を使用します。
>>> class MyClassObject(object):
... pass
...
>>> dir(MyClassObject)
['__class__', '__delattr__', '__dict__', '__doc__', '__format__', '__getattribute__', '__hash__', '__init__', '__module__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__']
任意のデータ型は、 str
という組み込み関数を使用して単純に文字列に変換できstr
。この関数は、データ型がprint
渡されたときにデフォルトで呼び出されます
>>> str(123) # "123"
ブロックインデント
Pythonはインデントを使用してコントロールとループの構造を定義します。これはPythonの可読性に貢献しますが、プログラマは空白の使用に細心の注意を払う必要があります。したがって、エディタの不正行為によって予期しない動作をするコードが発生する可能性があります。
(Pythonはコロン記号使用しています:
)コードのブロックの開始と終了場所を示すためにインデントを(あなたが他の言語から来た場合は、何らかの形に関連していると混同しないでください三項演算子 )。つまり、関数、ループ、 if
節、その他の構文など、Pythonのブロックには終了識別子がありません。すべてのブロックはコロンで始まり、その下にインデントされた行が含まれます。
例えば:
def my_function(): # This is a function definition. Note the colon (:)
a = 2 # This line belongs to the function because it's indented
return a # This line also belongs to the same function
print(my_function()) # This line is OUTSIDE the function block
または
if a > b: # If block starts here
print(a) # This is part of the if block
else: # else must be at the same level as if
print(b) # This line is part of the else block
厳密に1つの単一行のステートメントを含むブロックは、同じ行に置くことができますが、この形式は一般的には良いスタイルとはみなされません。
if a > b: print(a)
else: print(b)
1つ以上のステートメントでこれを実行しようとしても機能しません 。
if x > y: y = x
print(y) # IndentationError: unexpected indent
if x > y: while y != z: y -= 1 # SyntaxError: invalid syntax
空のブロックは、 IndentationError
引き起こします。コンテンツを持たないブロックがあるときはpass
(何もしないコマンド)を使う:
def will_be_implemented_later():
pass
スペースとタブ
つまり、インデントには常に 4つのスペースを使用します。
排他的にタブを使用することは可能ですが、PythonコードのスタイルガイドであるPEP 8では、スペースが優先されることが記載されています。
Python 3ではインデント用にタブとスペースを混在させることはできません。このような場合、コンパイル時にエラーが発生Inconsistent use of tabs and spaces in indentation
されず、プログラムが実行されません。
Python 2ではインデントでタブとスペースを混在させることができます。これは強くお勧めします。タブ文字は、前のインデントを8の倍数のスペースにします 。エディタはタブを4つのスペースの倍数として表示するように設定されていることが一般的であるため、微妙なバグが発生する可能性があります。
引用PEP 8 :
-t
オプションを指定してPython 2コマンドラインインタプリタを呼び出すと、タブとスペースを不法に混ぜるコードに関する警告が発行されます。-tt
を使用-tt
これらの警告はエラーになります。これらのオプションは強くお勧めします!
多くのエディタでは、「タブをスペースに」設定しています。エディタを設定するときは、タブ文字 ( '\ t')とTabキーを区別する必要があります。
- 少なくとも、(偶発的な)混在インデントが可能な場合は、言語セマンティクスと一致するように、タブ文字を8つのスペースを示すように構成する必要があります。編集者はタブ文字をスペースに自動的に変換することもできます。
- ただし、 Tabキーを押すとタブ文字を挿入する代わりに、4つのスペースを挿入するようにエディターを設定すると便利です。
タブとスペースを混在させて書いたPythonソースコード、または非標準のインデントスペースを使って書かれたPythonソースコードは、autopep8を使ってpep8に準拠させることができます。 (それほど強力でない代替手段はほとんどのPythonインストールにあります: reindent.py )
コレクションの種類
Pythonにはいくつかのコレクション型があります。 int
やstr
などの型は単一の値を保持しますが、コレクション型は複数の値を保持します。
リスト
おそらくlist
型はPythonで最も一般的に使われるコレクション型です。その名前にもかかわらず、リストは他の言語、主にJavaScriptの配列によく似ています。 Pythonでは、リストは単に有効なPython値の順序付けられたコレクションです。カンマで区切って値を角カッコで囲むことで、リストを作成できます。
int_list = [1, 2, 3]
string_list = ['abc', 'defghi']
リストは空にすることができます:
empty_list = []
リストの要素は単一のデータ型に限定されているわけではありません。Pythonが動的言語であるとすれば意味があります。
mixed_list = [1, 'abc', True, 2.34, None]
リストには、その要素として別のリストを含めることができます。
nested_list = [['a', 'b', 'c'], [1, 2, 3]]
リストの要素は、 インデックスまたはその位置の数値表現を介してアクセスできます。 Pythonのリストはゼロインデックスされているので、リストの最初の要素はインデックス0に、2番目の要素はインデックス1に、というように続きます。
names = ['Alice', 'Bob', 'Craig', 'Diana', 'Eric']
print(names[0]) # Alice
print(names[2]) # Craig
インデックスは、リストの末尾から数えることを意味する負の値でもかまいません( -1
は最後の要素のインデックスです)。したがって、上記の例のリストを使用すると:
print(names[-1]) # Eric
print(names[-4]) # Bob
リストは変更可能なので、リスト内の値を変更することができます:
names[0] = 'Ann'
print(names)
# Outputs ['Ann', 'Bob', 'Craig', 'Diana', 'Eric']
また、リストから要素を追加および/または削除することも可能です。
L.append(object)
でリストの最後にオブジェクトを追加し、 None
返します。
names = ['Alice', 'Bob', 'Craig', 'Diana', 'Eric']
names.append("Sia")
print(names)
# Outputs ['Alice', 'Bob', 'Craig', 'Diana', 'Eric', 'Sia']
特定のインデックスにリストする新しい要素を追加します。 L.insert(index, object)
names.insert(1, "Nikki")
print(names)
# Outputs ['Alice', 'Nikki', 'Bob', 'Craig', 'Diana', 'Eric', 'Sia']
L.remove(value)
をL.remove(value)
て最初に現れる値を削除し、 None
返します。
names.remove("Bob")
print(names) # Outputs ['Alice', 'Nikki', 'Craig', 'Diana', 'Eric', 'Sia']
値がxである最初の項目のリスト内のインデックスを取得します。そのような項目がない場合、エラーを表示します。
name.index("Alice")
0
リストのカウントの長さ
len(names)
6
リスト内の項目の出現回数をカウントする
a = [1, 1, 1, 2, 3, 4]
a.count(1)
3
リストを逆転する
a.reverse()
[4, 3, 2, 1, 1, 1]
# or
a[::-1]
[4, 3, 2, 1, 1, 1]
L.pop([index])
してインデックスの項目を削除して返します(デフォルトは最後の項目)。
names.pop() # Outputs 'Sia'
以下のようなリスト要素を反復処理できます:
for element in my_list:
print (element)
タプル
tuple
はリストに似ていますが、固定長で不変です。そのため、タプルの値を変更することも、値をタプルに追加することもタプルから削除することもできません。タプルは、IPアドレスやポートなど、変更する必要のない小さな値のコレクションによく使用されます。タプルは角カッコの代わりにかっこで表されます。
ip_address = ('10.20.30.40', 8080)
リストの同じ索引付けルールもタプルに適用されます。タプルも入れ子にすることができ、値は有効な任意の有効なPythonにすることができます。
1つのメンバしか持たないタプルを定義する必要があります(カンマに注意してください)。
one_member_tuple = ('Only member',)
または
one_member_tuple = 'Only member', # No brackets
または単にtuple
構文を使用する
one_member_tuple = tuple(['Only member'])
辞書
Pythonのdictionary
は、キーと値のペアの集合です。辞書は中括弧で囲まれています。各ペアはコンマで区切られ、キーと値はコロンで区切られます。次に例を示します。
state_capitals = {
'Arkansas': 'Little Rock',
'Colorado': 'Denver',
'California': 'Sacramento',
'Georgia': 'Atlanta'
}
値を取得するには、キーで参照してください:
ca_capital = state_capitals['California']
辞書内のすべてのキーを取得してから繰り返してもかまいません。
for k in state_capitals.keys():
print('{} is the capital of {}'.format(state_capitals[k], k))
辞書はJSON構文によく似ています。 Python標準ライブラリのネイティブjson
モジュールを使用して、JSONと辞書を変換することができます。
セット
set
とは、繰り返しはなく、挿入順ではなくソート順の要素のコレクションです。それらは、いくつかのものがグループ化されていることだけが重要であり、それらがどのような順序で含まれているのではないという状況で使用されます。大規模なデータグループの場合、要素がset
内にあるかどうかをチェックする方が、 list
に対して同じことを行うよりもはるかに高速です。
set
を定義することは、 dictionary
を定義することと非常によく似ていdictionary
。
first_names = {'Adam', 'Beth', 'Charlie'}
または、既存のlist
を使用してset
を作成することもできます。
my_list = [1,2,3]
my_set = set(my_list)
in
を使用in
てset
メンバーシップをチェックしてください:
if name in first_names:
print(name)
リストとまったく同じset
を反復処理できますが、値は任意の実装定義の順序になります。
defaultdict
defaultdict
はキーのデフォルト値を持つ辞書で、明示的に値が定義されていないキーにはエラーなしでアクセスできます。 defaultdict
は、新しいキーが使用されるたびに初期化する必要がないという意味で、辞書の値がコレクション(リスト、辞書など)である場合に特に便利です。
defaultdict
はKeyErrorを発生させません。存在しないキーは、返されるデフォルト値を取得します。
たとえば、次の辞書を考えてみましょう。
>>> state_capitals = {
'Arkansas': 'Little Rock',
'Colorado': 'Denver',
'California': 'Sacramento',
'Georgia': 'Atlanta'
}
存在しないキーにアクセスしようとすると、pythonは次のようにエラーを返します
>>> state_capitals['Alabama']
Traceback (most recent call last):
File "<ipython-input-61-236329695e6f>", line 1, in <module>
state_capitals['Alabama']
KeyError: 'Alabama'
defaultdict
試してみましょう。これはコレクションモジュールにあります。
>>> from collections import defaultdict
>>> state_capitals = defaultdict(lambda: 'Boston')
与えられたキーが存在しない場合にデフォルト値( Boston )を設定することです。前と同じようにdictを作成します。
>>> state_capitals['Arkansas'] = 'Little Rock'
>>> state_capitals['California'] = 'Sacramento'
>>> state_capitals['Colorado'] = 'Denver'
>>> state_capitals['Georgia'] = 'Atlanta'
存在しないキーでdictにアクセスしようとすると、pythonはデフォルト値、すなわちBostonを返します
>>> state_capitals['Alabama']
'Boston'
既存のキーの作成した値を通常のdictionary
同様に返します
>>> state_capitals['Arkansas']
'Little Rock'
ヘルプユーティリティー
Pythonにはインタプリタに組み込まれたいくつかの関数があります。キーワード、組み込み関数、モジュール、またはトピックの情報を取得するには、Pythonコンソールを開き、次のように入力します。
>>> help()
キーワードを直接入力して情報を受け取ります:
>>> help(help)
またはユーティリティ内で:
help> help
説明を表示します:
Help on _Helper in module _sitebuiltins object:
class _Helper(builtins.object)
| Define the builtin 'help'.
|
| This is a wrapper around pydoc.help that provides a helpful message
| when 'help' is typed at the Python interactive prompt.
|
| Calling help() at the Python prompt starts an interactive help session.
| Calling help(thing) prints help for the python object 'thing'.
|
| Methods defined here:
|
| __call__(self, *args, **kwds)
|
| __repr__(self)
|
| ----------------------------------------------------------------------
| Data descriptors defined here:
|
| __dict__
| dictionary for instance variables (if defined)
|
| __weakref__
| list of weak references to the object (if defined)
モジュールのサブクラスをリクエストすることもできます:
help(pymysql.connections)
ヘルプを使用して、インポートしたさまざまなモジュールのドキュメントストリングにアクセスできます。たとえば、次のようにします。
>>> help(math)
あなたはエラーが発生します
>>> import math
>>> help(math)
そして、モジュール内で使用可能なメソッドのリストを取得しますが、インポートした後でなければなりません。
quit
てヘルパーを閉じる
モジュールの作成
モジュールは、定義とステートメントを含むインポート可能なファイルです。
モジュールは、 .py
ファイルを作成することで作成できます。
# hello.py
def say_hello():
print("Hello!")
モジュール内の関数は、モジュールをインポートすることによって使用できます。
作成したモジュールの場合は、インポートするファイルと同じディレクトリに存在する必要があります。 (ただし、あらかじめ組み込まれているモジュールをPythonのlibディレクトリに入れることもできますが、可能であれば避けるべきです)。
$ python
>>> import hello
>>> hello.say_hello()
=> "Hello!"
モジュールは他のモジュールによってインポートできます。
# greet.py
import hello
hello.say_hello()
モジュールの特定の機能をインポートすることができます。
# greet.py
from hello import say_hello
say_hello()
モジュールにエイリアスを付けることができます。
# greet.py
import hello as ai
ai.say_hello()
モジュールはスタンドアロンの実行可能なスクリプトにすることができます。
# run_hello.py
if __name__ == '__main__':
from hello import say_hello
say_hello()
それを実行します!
$ python run_hello.py
=> "Hello!"
モジュールがディレクトリ内にあり、pythonで検出する必要がある場合、ディレクトリには__init__.py
という名前のファイルが含まれている必要があります。
文字列関数 - str()およびrepr()
オブジェクトの読み取り可能な表現を取得するために使用できる2つの関数があります。
repr(x)
はx.__repr__()
呼び出しますx.__repr__()
: x
表現。 eval
は通常この関数の結果を元のオブジェクトに変換します。
str(x)
はx.__str__()
str(x)
呼び出します。オブジェクトを記述する人間が判読可能な文字列です。これにより、技術的な詳細が解消される場合があります。
repr()
多くの型では、この関数はeval()
に渡されるときに同じ値を持つオブジェクトを生成する文字列を返そうとします。そうでない場合、表現は、追加の情報と共にオブジェクトのタイプの名前を含む山括弧で囲まれた文字列です。これには、オブジェクトの名前とアドレスが含まれることがよくあります。
str()
文字列の場合は、文字列自体を返します。 thisとrepr(object)
の違いは、 str(object)
は必ずeval()
受け入れられる文字列を返そうとはしないということです。むしろ、その目的は、印刷可能な、つまり「人間が読める」文字列を返すことです。引数が指定されていない場合、空の文字列''
が返されます。
例1:
s = """w'o"w"""
repr(s) # Output: '\'w\\\'o"w\''
str(s) # Output: 'w\'o"w'
eval(str(s)) == s # Gives a SyntaxError
eval(repr(s)) == s # Output: True
例2:
import datetime
today = datetime.datetime.now()
str(today) # Output: '2016-09-15 06:58:46.915000'
repr(today) # Output: 'datetime.datetime(2016, 9, 15, 6, 58, 46, 915000)'
クラスを作成するときに、これらのメソッドをオーバーライドして、必要な処理を行うことができます。
class Represent(object):
def __init__(self, x, y):
self.x, self.y = x, y
def __repr__(self):
return "Represent(x={},y=\"{}\")".format(self.x, self.y)
def __str__(self):
return "Representing x as {} and y as {}".format(self.x, self.y)
上記のクラスを使用して、結果を確認できます。
r = Represent(1, "Hopper")
print(r) # prints __str__
print(r.__repr__) # prints __repr__: '<bound method Represent.__repr__ of Represent(x=1,y="Hopper")>'
rep = r.__repr__() # sets the execution of __repr__ to a new variable
print(rep) # prints 'Represent(x=1,y="Hopper")'
r2 = eval(rep) # evaluates rep
print(r2) # prints __str__ from new object
print(r2 == r) # prints 'False' because they are different objects
pipを使用して外部モジュールをインストールする
pip
は、pythonパッケージインデックス(PyPI)で利用可能な選択肢から何かパッケージをインストールする必要があるときにあなたの友人です。 python.org>からダウンロードしたPython 2> = 2.7.9またはPython 3> = 3.4を使用している場合、 pip
はすでにインストールされています。 Linuxまたはネイティブパッケージマネージャーを備えた別の* nixを実行するコンピューターでは、 pip
手動でインストールする必要があります。
インストールのPython 2とPython 3の両方を持つインスタンスでは、 pip
多くの場合、Pythonの2とを指しpip3
使ってPython 3にpip
唯一のPython 2とのパッケージをインストールしますpip3
だけのPython 3のパッケージをインストールします。
パッケージの検索/インストール
パッケージを検索するのは、入力と同じくらい簡単です
$ pip search <query>
# Searches for packages whose name or summary contains <query>
パッケージをインストールするのは、タイピングと同じくらい簡単です(端末/コマンドプロンプトで、Pythonインタプリタではない)
$ pip install [package_name] # latest version of the package
$ pip install [package_name]==x.x.x # specific version of the package
$ pip install '[package_name]>=x.x.x' # minimum version of the package
xxx
は、インストールするパッケージのバージョン番号です。
サーバーがプロキシの後ろにある場合、以下のコマンドを使用してパッケージをインストールできます。
$ pip --proxy http://<server address>:<port> install
インストールされたパッケージのアップグレード
インストールされているパッケージの新しいバージョンが表示されたら、システムに自動的にインストールされません。インストール済みのパッケージのうち、どれが旧式になっているかの概要を知るには、次のコマンドを実行します。
$ pip list --outdated
特定のパッケージの使用をアップグレードする
$ pip install [package_name] --upgrade
古いパッケージをすべて更新することは、 pip
標準機能ではありません。
ピップをアップグレードする
次のコマンドを使用して既存のpipインストールをアップグレードできます
LinuxまたはMacOS Xの場合:
$ pip install -U pip
いくつかのLinuxシステムでは、pipで
sudo
を使う必要があるかもしれませんWindowsの場合:
py -m pip install -U pip
または
python -m pip install -U pip
ピップに関する詳細はこちらを参照してください 。
Python 2.7.xおよび3.xのインストール
注 :以下の説明は、Python 2.7用に書かれています(指定がない限り)。Python 3.xの手順は似ています。
WINDOWS
まず、Python 2.7の最新バージョンを公式Webサイト( https://www.python.org/downloads/)からダウンロードしてください 。バージョンはMSIパッケージとして提供されます。手動でインストールするには、ファイルをダブルクリックしてください。
デフォルトでは、Pythonはディレクトリにインストールされます:
C:\Python27\
警告:インストールはPATH環境変数を自動的に変更しません。
あなたのPythonのインストールがC:\ Python27にあると仮定し、これをPATHに追加してください:
C:\Python27\;C:\Python27\Scripts\
Pythonのインストールがcmdで有効かどうかを確認する:
python --version
Python 2.xおよび3.xのサイドバイサイド
Windowsマシン上にPython 2.xと3.xを並行してインストールして使用するには:
MSIインストーラを使用してPython 2.xをインストールします。
- Pythonがすべてのユーザーにインストールされていることを確認してください。
- オプション:Pythonを
PATH
に追加して、python
を使用してPython 2.xをコマンドラインから呼び出し可能にします。
それぞれのインストーラを使用してPython 3.xをインストールします。
- ここでも、すべてのユーザーにPythonがインストールされていることを確認してください。
- オプション:Pythonを
PATH
に追加して、Python 3.xをpython
を使ってコマンドラインから呼び出し可能にします。これはPython 2.xのPATH
設定よりも優先される可能性がありますので、PATH
を再確認して設定を確認してください。 - すべてのユーザーに
py launcher
をインストールしてください。
Python 3は、Python 2.xとPython 3.xをコマンドラインから交換可能に起動するために使用できるPythonランチャーをインストールします。
P:\>py -3
Python 3.6.1 (v3.6.1:69c0db5, Mar 21 2017, 17:54:52) [MSC v.1900 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>>
C:\>py -2
Python 2.7.13 (v2.7.13:a06454b1afa1, Dec 17 2016, 20:42:59) [MSC v.1500 32 Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>>
特定のPythonバージョンに対応するpip
バージョンを使用するには、次のようにします。
C:\>py -3 -m pip -V
pip 9.0.1 from C:\Python36\lib\site-packages (python 3.6)
C:\>py -2 -m pip -V
pip 9.0.1 from C:\Python27\lib\site-packages (python 2.7)
LINUX
CentOS、Fedora、Redhat Enterprise(RHEL)、Ubuntuの最新バージョンにはPython 2.7が付属しています。
Python 2.7を手動でLinuxにインストールするには、端末で次のようにします:
wget --no-check-certificate https://www.python.org/ftp/python/2.7.X/Python-2.7.X.tgz
tar -xzf Python-2.7.X.tgz
cd Python-2.7.X
./configure
make
sudo make install
また、PATH環境変数に新しいpythonのパスを追加します。新しいPythonが/root/python-2.7.X
場合、 export PATH = $PATH:/root/python-2.7.X
実行しexport PATH = $PATH:/root/python-2.7.X
Pythonのインストールが有効かどうかをターミナルで確認する:
python --version
Ubuntu(ソースから)
Python 3.6が必要な場合は、以下に示すようにソースからインストールできます(Ubuntu 16.10および17.04はUniversal Repositoryに3.6バージョンがあります)。 Ubuntu 16.04以降のバージョンでは、以下の手順に従わなければなりません。
sudo apt install build-essential checkinstall
sudo apt install libreadline-gplv2-dev libncursesw5-dev libssl-dev libsqlite3-dev tk-dev libgdbm-dev libc6-dev libbz2-dev
wget https://www.python.org/ftp/python/3.6.1/Python-3.6.1.tar.xz
tar xvf Python-3.6.1.tar.xz
cd Python-3.6.1/
./configure --enable-optimizations
sudo make altinstall
マックOS
私たちが言うように、macOSはPython 2.7.10でインストールされていますが、このバージョンは古く、通常のPythonから若干修正されています。
OS Xに同梱されているPythonのバージョンは学習には最適ですが、開発には向いていません。 OS Xに同梱されているバージョンは、安定したプロダクションバージョンとみなされている現在のPythonの公式リリースより古いかもしれません。 ( ソース )
ホームブリューをインストールする:
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
Python 2.7をインストールする:
brew install python
Python 3.xでは、代わりにbrew install python3
コマンドを使用します。