p.21 |
Guido van Rossam 氏は、 |
Guido van Rossum 氏は、 |
1 |
- |
|
p.22 |
ネットワークプログラミン |
ネットワークプログラミング |
1 |
- |
|
p.29 |
Guido van Rossam 氏が |
Guido van Rossum 氏が |
1 |
- |
|
p.39 |
com というディレクトリだけが見えあることでしょう |
com というディレクトリだけが見えることでしょう |
1 |
- |
|
p.40 |
祖結合の |
疎結合の |
1 |
- |
|
p.43 |
少数部を持つ値を |
小数部を持つ値を |
1 |
- |
|
p.45 |
Guido van Rossam は |
Guido van Rossum 氏は |
1 |
- |
|
p.46 |
1-5-1 メジャープロットフォームへのインストール |
1-5-1 メジャープラットフォームへのインストール |
1 |
- |
|
p.46 |
Widnows |
Windows |
1 |
- |
|
p.47 |
object oct oepn ord |
object oct open ord |
1 |
- |
|
p.49 |
捜査中 |
操作中 |
1 |
- |
|
p.51 |
PHPなどと共にに |
PHPなどと共に |
1 |
- |
|
p.65 |
かなり大きいな値が |
かなり大きな値が |
1 |
- |
|
p.68 |
# 少数点を含む実数 |
# 小数点を含む実数 |
1 |
- |
|
p.70 |
>>> math.py |
(消去) |
3 |
- |
|
p.71 |
rect(x) |
rect(r, phi) |
1 |
- |
|
p.72 |
実装として扱えない |
実数として扱えない |
1 |
- |
|
p.75 |
coding[:=]s*([-w.]+) |
coding[:=]\s*([-\w.]+) |
1 |
- |
|
p.76 |
複合化しようとすると、 |
復号化しようとすると、 |
1 |
- |
|
p.81 |
>>> x[2:-1]
[3.0, 'a', 'b', 'c'] |
>>> x[2:-1]
[3.0, 'a', 'b'] |
2 |
- |
|
p.87 |
discartdメソッドを使えば |
discardメソッドを使えば |
1 |
- |
|
p.90 |
シンメトリックディッファレンス |
シンメトリックディファレンス |
1 |
- |
|
p.91 |
disjointメソッドを |
isdisjointメソッドを |
1 |
- |
|
p.97 |
空のシーケンス([]や()や[]) |
空のシーケンス(""や()や[]) |
1 |
- |
|
p.97 |
__nonezero__ メソッドが |
__bool__ メソッドが |
1 |
- |
|
p.98 |
条件分 |
条件文 |
1 |
- |
|
p.101 |
>>> 0 < 1 < 2 < 3
True
|
>>> x = 2
>>> 0 < x < 3
True
>>> x = 4
>>> 0 < x < 3
False
|
1 |
- |
|
p.102 |
文字列も度同様に同じ文字列 |
文字列も同様に同じ文字列 |
1 |
- |
|
p.109 |
替わりに |
代わりに |
1 |
- |
|
p.110 |
try のブロックに既述し、 |
try のブロックに記述し、 |
1 |
- |
|
p.121 |
kwargs = {'arg3': 3, 'arg4': 4} |
kwargs = {'arg4': 4, 'arg5': 5} |
1 |
- |
|
p.122 |
関数append_number()の戻り値を見ると、 |
上の例で、関数append_number()の戻り値は、 |
1 |
- |
|
p.123 |
def spam(*args, defaultarg="省略時の値"):
... |
def spam(*args, default_arg="省略時の値"):
... |
1 |
- |
|
p.126 |
この例のように |
リスト5.4のように |
1 |
- |
|
p.129 |
>>> for value in generator: |
>>> for value in generator(): |
1 |
- |
|
p.131 |
def pick_odd(seq):
return filter(lambda item: item % 2 == 0, seq) |
def pick_odd(seq):
return filter(lambda item: item % 2 == 1, seq) |
1 |
- |
|
p.131 |
item %2 == 1 |
item % 2 == 1 |
1 |
- |
|
p.137 |
新しいインスタンスが帰ってきます |
新しいインスタンスが返ってきます |
1 |
- |
|
p.140 |
# Base.spam() をオーバーロード |
# Base.spam() をオーバーライド |
1 |
- |
|
p.146 |
演算子に対応するメソッド |
演算子の左項に対応するメソッド |
1 |
- |
|
p.147 |
累積代入分 |
累積代入文 |
1 |
- |
|
p.153 |
delete spam.ham |
del spam.ham |
1 |
- |
|
p.153 |
self.__ham == value |
self.__ham = value |
1 |
- |
|
p.154 |
class Spam:: |
class Spam: |
1 |
- |
|
p.158 |
isinstance(Spam, Food)やisinstance(Ham()), Food)の結果は |
isinstance(Spam(), Food)やisinstance(Ham(), Food)の結果は |
1 |
- |
|
p.158 |
Spam`` と |
Spam と |
1 |
- |
|
p.158 |
abstructmethod()デコレータ |
abstructmethodデコレータ |
1 |
- |
|
p.161 |
メンバのみが |
全てのメンバが |
1 |
- |
|
p.161 |
ディレクトリ名を「:」を区切り |
ディレクトリ名を「:」で区切り |
1 |
- |
|
p.162 |
例えば、
python/usr/bin/spam.py として Python を起動した場合 |
例えば、
python /usr/bin/spam.py として Python を起動した場合 |
1 |
- |
|
p.163 |
指定されたものします。 |
指定されたものとします。 |
1 |
- |
|
p.164 |
...
|--subpackage_spam
|-- subpackage_ham.py
|-- subpackage_egg.py
|
...
|--subpackage_spam
|-- __init__.py
|-- subpackage_ham.py
|-- subpackage_egg.py
|
1 |
- |
|
p.164 |
ディレクトリでですが、 |
ディレクトリですが、 |
1 |
- |
|
p.165 |
from . iport egg |
from . import egg |
1 |
- |
|
p.166 |
sys.path.add('package_dir/project1')
sys.path.add('package_dir/project2')
|
sys.path.append('package_dir/project1')
sys.path.append('package_dir/project2')
|
1 |
- |
|
p.167 |
del math.f |
del math.spam |
1 |
- |
|
p.168 |
圧縮してspam.zipファイルを作成して |
圧縮したspam.zipファイルを作成して |
1 |
- |
|
p.169 |
>>>> dumb_print.print("Spam!") |
>>> dumb_print.print("Spam!") |
1 |
- |
|
p.174 |
開放 |
解放 |
1 |
- |
|
p.175 |
開放 |
解放 |
1 |
- |
|
p.184 |
def get_filename(self, filename): |
def get_filename(self, fullname): |
1 |
- |
|
p.192 |
通常の例外規定クラス |
通常の例外基底クラス |
1 |
- |
|
p.194 |
インタプリタ起動時の Warnig 設定オプション |
インタプリタ起動時の Warning 設定オプション |
1 |
- |
|
p.197 |
複数の iterable を受け取って、
各 iterable の同じ順序のオブジェクトを
タプルにつめて返します。 |
複数の iterable を受け取って、
各 iterable の同じ順序のオブジェクトを
タプルにつめて yield で返します。 |
1 |
- |
|
p.206 |
>>> b = b'あ' |
>>> b = b'\xe3\x81\x82' |
1 |
- |
|
p.207 |
if line.indexof(search) > -1:
|
if line.find(search) > -1:
|
1 |
- |
|
p.207 |
>>> b = b'あ'
>>> s = str(b)
>>> print(s)
b'あ' |
>>> b = b'\xe3\x81\x82'
>>> s = str(b)
>>> print(s)
b'\xe3\x81\x82' |
1 |
- |
|
p.212 |
-encodin オプションも追加しています。 |
-e (--encoding) オプションも追加しています。 |
1 |
- |
|
p.218 |
inport pickle |
import pickle |
1 |
- |
|
p.222 |
オプションをを含め、 |
オプションを含め、 |
1 |
- |
|
p.227 |
acyncore モジュールの |
asyncore モジュールの |
1 |
- |
|
p.228 |
acyncore.dispatcher を継承します。 |
asyncore.dispatcher を継承します。 |
1 |
- |
|
p.231 |
class EchoView:
|
class EchoView(tkinter.Frame):
|
1 |
- |
|
p.234 |
handler = EchoHandler(sock) |
handler = EchoHandler(sock, self) |
1 |
- |
|
p.234 |
http://gihyo.jp/book/2010/978-4-7741-5539-5/support |
http://gihyo.jp/book/2013/978-4-7741-5539-5/support |
1 |
- |
|
p.236 |
12-1 配布ための準備 |
12-1 配布のための準備 |
1 |
- |
|
p.237 |
名前空間パッケージやパッケージ名をもとに決めるのがわかり安いでしょう |
名前空間パッケージやパッケージ名をもとに決めるのがわかり易いでしょう |
1 |
- |
|
p.237 |
myproject-0.0.tar.gz |
ppjp.chat-0.0.0.tar.gz |
1 |
- |
|
p.238 |
from setuptools import setup, find_packages |
from setuptools import setup |
1 |
- |
|
p.238 |
tar tvf sdist/ppjp.chat-0.0.0.tar.gz |
tar tf dist/ppjp.chat-0.0.0.tar.gz |
1 |
- |
|
p.239 |
ppjp.chat |
ppjp.chat
================= |
1 |
- |
|
p.244 |
uploadサブコマンドのと同時に |
uploadサブコマンドと同時に |
1 |
- |
|
p.257 |
noseやpy.testなどの |
noseやpytestなどの |
1 |
- |
|
p.260 |
geeting関数 |
greeting関数 |
1 |
- |
|
p.260 |
m = re.match(r'Basic\s+(?P<basic_auth>\w+)', auth)
|
m = re.match(r'Basic\s+(?P<basic_auth>[a-zA-Z0-9+/=]+)', auth)
|
1 |
- |
|
p.264 |
values = request.params.get_all('values') |
values = request.params.getall('value') |
1 |
- |
|
p.267 |
<% extends "base.html" %>
<h1>{{ message }}</h1>
|
{% extends "base.html" %}
{% block body %}
<h1>{{ message }}</h1>
{% endblock %} |
1 |
- |
|
p.267 |
.body { |
body { |
1 |
- |
|
p.270 |
$ touch -p py3wiki/__init__.py
$ touch -p py3wiki/__main__.py |
$ touch py3wiki/__init__.py
$ touch py3wiki/__main__.py |
1 |
- |
|
p.271 |
from . import main
main() |
from . import main
if __name__ == '__main__':
main() |
1 |
- |
|
p.273 |
engine = sa.create_engine('sqlite:///{dir}/wiki.db'.format(dir=os.getcwd())) |
import os
...
engine = sa.create_engine('sqlite:///{dir}/wiki.db'.format(dir=os.getcwd())) |
1 |
- |
|
p.275 |
def page_view(request):
page_name = request.urlvars['page_name']
edit_url = request.environ['webdispatch.urlgenerator'].generate('page_edit', page_name=page_name)
try:
page = DBSession.query(Page).filter(Page.page_name==page_name).one()
tmpl = env.get_template('page.html')
return tmpl.render(page=page, edit_url=edit_url)
except NoResultFound:
return HTTPFound(location=edit_url) |
@wsgify
def page_view(request):
page_name = request.urlvars['page_name']
page = DBSession.query(Page).filter(Page.page_name==page_name).one()
tmpl = env.get_template('page.html')
return tmpl.render(page=page) |
1 |
- |
|
p.276 |
def page_view(request):
(略)
tmpl = env.get_template('page.html') |
def page_edit_form(request):
(略)
tmpl = env.get_template('page_edit.html') |
1 |
- |
|
p.285 |
...
#配列の型の int ではなく float になる
...
... b
array([[1. , 2. , 3. ], [1. , 2. , 3.3]]) |
...
#配列の型は int ではなく float になる
...
... c
array([[1. , 2. , 3. ], [1. , 2. , 3.3]]) |
1 |
- |
|
p.288 |
... numpy.sin(math.pi/2)) |
... numpy.sin(math.pi/2) |
1 |
- |
|
p.290 |
if __name__ == '__main__':
main(): |
if __name__ == '__main__':
main() |
1 |
- |
|
p.293 |
quad(rgt1, 0, 10)の検算 |
quad(ret1, 0, 10)の検算 |
1 |
- |
|
p.299 |
# 最初に作った配列と同じ範囲を 200 分割した配列を作成 |
# 最初に作った配列と同じ範囲を 180 分割した配列を作成 |
1 |
- |
|
p.302 |
weave.inline(source, ['x', 'y']) |
weave.inline(code, ['x', 'y']) |
1 |
- |
|
p.302 |
...C++側で暗黙に定義されるPyObject* 型の変数ret_valueに値を設定します。 |
...C++側で暗黙に定義されるPyObject* 型の変数return_valに値を設定します。 |
1 |
- |
|
p.303 |
code = '''
ret_value = PyInt_FromLong(x + y);
'''
...
ret = weave.inline(source,['x', 'y']) |
code = '''
return_val = PyInt_FromLong(x + y);
'''
...
ret = weave.inline(code,['x', 'y']) |
1 |
- |
|
p.303 |
# 返値は ret_value 変数に代入する |
# 返値は return_val 変数に代入する |
1 |
- |
|
p.312 |
g = nx,Graph([(1, 2), (2, 3), (3, 4)]) |
g = nx.Graph([(1, 2), (2, 3), (3, 4)]) |
1 |
- |
|
p.313 |
edgeを追加する場合は、同様にGraphクラスのメソッドであるadd_edgeかadd_edge_fromを使います。 |
edgeを追加する場合は、同様にGraphクラスのメソッドであるadd_edgeかadd_edges_fromを使います。 |
1 |
- |
|
p.341 |
>>> for i in range(30):
... |
>>> import math
>>> for i in range(30):
... |
1 |
- |
|
p.344 |
この館数の返値は... |
この関数の戻り値は... |
1 |
- |
|
p.351 |
Python らいしいシンプルなコードを記述できます。 |
Python らしいシンプルなコードを記述できます。 |
1 |
- |
|
p.352 |
さらに HTTP ヘッダーにも HTTP ヘッダーにも文字コードが指定されていない |
さらに HTTP ヘッダーにも文字コードが指定されていない |
1 |
- |
|
p.353 |
files = {"attachment": ("myfile.xlsx", open("myfile.xlsx", "rw"))} |
files = {"attachment": ("myfile.xlsx", open("myfile.xlsx", "rb"))}
|
1 |
- |
|
p.354 |
except ImortError:
|
except ImportError:
|
1 |
- |
|
p.357 |
リスト17.9のコードは、p要素でidにcopyrightが指定されている要素を検索します。 |
次のコードは、p要素でidにcopyrightが指定されている要素を検索します。 |
1 |
- |
|
p.364 |
event_handler と違い
stanza_handler は "subscibe" や "unsubscribe" のように |
event_handler と違い
stanza_handler は "subscribe" や "unsubscribe" のように |
1 |
- |
|
p.368 |
参加命令を発効しています。 |
参加命令を発行しています。 |
1 |
- |
|
p.371 |
あまり替わりませんので |
あまり変わりませんので |
1 |
- |
|
p.371 |
#(4)リストからの値の削除
client.lrem('mylist', 0, 'eggs') |
#(4)リストからの値の削除
client.lrem('mylist', 'eggs', num=0)
|
1 |
- |
|
p.372 |
でmemcache.Redisオブジェクトを作成しています |
でredis.Redisオブジェクトを作成しています |
1 |
- |
|
p.377 |
from sqlalchmey import create_engine |
from sqlalchemy import create_engine |
1 |
- |
|
p.377 |
データベースのへの接続は |
データベースへの接続は |
1 |
- |
|
p.379 |
return "<MailAddress(%s, %s>" % (self.name, self.address) |
return "<MailAddress(%s, %s)>" % (self.name, self.address) |
1 |
- |
|
p.384 |
本稿執筆時点では Python3 系で
動作する Django はリリースされていませんし、 |
発売前の 2013-02-26 に
Python3 対応の Django 1.5 が
リリースされてしまいましたね (^ ^;;
https://www.djangoproject.com/weblog/2013/feb/26/15/
https://docs.djangoproject.com/en/dev/releases/1.5/ |
1 |
- |
|
p.386 |
pikled_data1=pickle.dumps(data1) |
pickled_data1=pickle.dumps(data1) |
1 |
- |
|
p.389 |
$ pssh -h hosts.txt -o /tmp -o /tmp -A -- uname -a |
$ pssh -h hosts.txt -o /tmp -A -- uname -a |
3 |
- |
|
p.401 |
1つ目および 2つ目の記述例はとても冗長です。reStructredText を docutils 単体で使うのであればこれしかないのですが、sphinx 上であれば3つ目の list-table を用いるのが簡単です。 |
1つ目および 2つ目の記述例は、パディングをする必要があるなどとても冗長です。
ソース上の見た目がテーブルではなくなってしまいますが、記述するのであれば3つ目のlist-tableを用いるのが簡単です。 |
1 |
- |
|
p.402 |
conf.py の設定がない。 |
conf.py に以下の設定が必要。
extensions = ['sphinx.ext.autodoc'] |
1 |
- |
|
p.404 |
.. autodoc:: sample
:members:
|
.. automodule:: sample
:members:
|
1 |
- |
|
p.404 |
.. autodoc:: sample
:members: InModuleClass, ..., func_without_docstring |
.. automodule:: sample
:members: InModuleClass, ..., func_without_docstring
:undoc-members: |
1 |
- |
|
p.451 |
assertメソッド |
assert文 |
1 |
- |
|
p.454 |
33 432 |
33, 432 |
1 |
- |
|
p.457 |
クラスメソッ |
クラスメソッド |
1 |
- |
|
p.457 |
Web Server Gateway Interface (WSG) |
Web Server Gateway Interface (WSGI) |
1 |
- |
|
p.460 |
所謂エンたエンタープライズの |
所謂エンタープライズの |
1 |
- |
|
|
|
|
|
|
|