Head First Python学習ノート

7248 ワード

やっと大まかにこの本を読み终わって、学习の过程の中でいくつかノートを书いて、主に本の中のすべての章のいくつかの関连する内容を覚えました
2012年の本ですが、具体的な内容は参考になります.以下の番号は章ごとの内容です.1.BIF isinstance()は、識別子が指定したタイプのデータオブジェクトlen()のインデントを指すかどうかを示す
2.setup.pyは、パッケージのパブリケーションを構築、インストール、アップロードするためのモジュールのメタデータを提供します.
  form module import function
pythonのプライマリネーミングスペースは_main__
組み込み関数のネーミングスペースは_buildins__各pythonプログラムに自動的に含まれます
range()はforと固定反復回数を併用することができる.
関数パラメータにデフォルト値(定義時)を指定すると、関数パラメータはオプションです.
  PyPi.python.org
3.seek()は、ファイルを開始位置に戻すために使用できます.
split()は、1つの文字列を1つのサブ列リストに分解することができる
データが希望通りでないValueErrorデータがIOErrorに正常にアクセスできない
  help()
find()文字列内で特定の文字列を検索する
  not
  try/except  
with自動完了クローズas
finally総会実行
pass(NULL文)
4.str()
strip()空白文字の除去
  sys.stdout(import sysが必要)
inメンバー関係のチェック
+接続文字列または数値加算
localsは、現在の役割ドメイン内の変数の集合を返します.
  
  import pickle
  pickle dump() load() PickleError
  open('data.pickle', 'wb') as savadata #    
  pickle.dump([1,2,'three'], savadata)
  open('data.pickle', 'rb') as restoredata #    
  a_list=pickle.load(restoredata)
  import copy
  #               copy.deepcopy
5.var.sort()#転送reverse=Trueデータは降順に並べ替えることができる
sorted(var)#リスト全体ではなく、リスト項目に対して変換を完了
  var.upper()
  float(var)
  not in
ファクトリ関数ファクトリ関数:set()などの新しいデータ項目を作成して新しいセットを作成します.
   for example: distance=set()
distance={10.6,11,8,10.6,'two',7}#が提供するデータ値リストの重複は無視されます
またはdistance=set(james)#jamesリストの重複はすべて無視されます
次のコードがある場合:
  new_l=[]
  for t in old_l:
new_l.append(len(t))
リストを使用してこのコードを書き換えるには、new_と書くことができます.l=[len(t) for t in old_l]
1つのリスト内の複数のデータ・アイテムにアクセスするには、スライスを使用します.
例:my_List[3:6]インデックス位置3からインデックス位置6までのリスト項目にアクセスします.
6.dict()ファクトリ関数を使用するか、{}を使用して空の辞書person={}またはperson=dict()を作成します.
Person辞書のNameに関連付けられた値にアクセスし、person['Name']を使用します.
辞書のダイナミック拡大
初期化はperson={'Name':'takefetter'}を直接使用できます.
  
classの各メソッドの最初のパラメータはselfです
例:class a(list):#()は継承元を表す
def __init__(self,a_name,a_dob=None,a_times=[]):
     self.name=a_name
self.dob=a_dob
self.times=a_times
7.Web開発MVCモード(Model-View-Controllerモデル-ビュー-コントローラ)
本の中で推薦するフォルダの構造:
  webapp-cgi-bin
-data
-imamges
-tenplates
-index.html
GCIはサーバにプログラムゲートウェイ構造(Common Gateway Interface,GCI)を実行させる
  
  from http.server import HTTPServer,CGIHTTPRequestHandler
  
  port=8080
  httpd=HTTPServer(('',port),CGIHTTPRequestHandler)
  print("Start simple_httpd on port: " +str(httpd.server_port))
  httpd.serve_forever()

 
 /////////////////////////////////////////////////////////////////////////////
Unixシステムに基づいて実行する必要があります.
chmod+xコマンドCGIの実行可能権限ビットの設定(chmod+x generate_list.py設定実行可能権限ビットの入力)
プログラムの先頭に次のコードを追加します!/usr/local/bin/python3
 /////////////////////////////////////////////////////////////////////////////
  import cgi
  import cgitb    #
cgitb.enable()#pythonのcgi追跡技術
cgi.FieldStorage()#Webリクエストの一部としてWebサーバに送信されたデータにアクセスします.データはPython辞書として扱われます.
@property修飾子は、関数が返すデータにアクセスするときにクラス属性と見なすことができます.
  
stringモジュールには、単純な文字列置換をサポートするTemplateというクラスが含まれています.
globモジュールはファイル名リストの処理に適しています
  
8.pythonを使用して簡単なandroidアプリケーションを構築する
  http://code.google.com/p/android-scripting
  Sl4a_r2.apk python_for_android_r1.apk
  
  import android
  app=android.Android()
  msg="Hello from Head First Python on Android"]
  app.makeToast(msg)
  app.diglogCreateAlert()
  app.diaglogSetSingleChoiceItems
  app.dialogSetPositiveButtonText()
  app.dialogSetNegativeButtonText()
  app.dialogShow()
  resp=app.dialogGetResponse().result

  
JSONライブラリモジュールでは、Pythonの内蔵タイプをテキストベースのJSONデータ交換フォーマットに変換できます
  json.dumps()はPythonタイプの文字列バージョンを作成できます
  json.loads()はJSON文字列からPythonタイプを作成できます
データをJSONで送信する場合は、Content-Type:アプリケーション/jsonに設定する必要があります
  
urllibおよびurllib 2ライブラリモジュールは、1つのプログラムからwebサーバに符号化されたデータを送信するために使用することができる.
  
  import sys
    sys.stderr sys.stdin sys.stdout
9.  SQLite
≪プロシージャ|Procedure|ldap≫:≪接続|Connection|ldap≫-カーソルの作成-カーソルのインタラクションの使用-コミットorロールバック-カーソルを閉じて元に戻します
管理ツールsqlite 3コマンドラインツール
本書ではSQLite Managerを使用しています
SQL(Structured Query Language)は、CREATE、INSERT、SELETEなどを使用してデータベース内のデータを処理します.
import sqlite3
connection =sqlite3.connect('test.sqlite')
cursor.connection.cursor()
cursor.execute("""SELECT DATE('NOW')""")
cursor.execute("""SELECT FROM test """)
cursor.execute("""SELECT FROM test WHERE id=?""",(athlete_id)) #"?"      Python    SQL      
connection.commit()
connection.close()

rollback()メソッドデータに対する未完了の変更をすべてキャンセル
import sqlite3
connection =sqlite3.connect('coachdata.sqlite')
cursor.connection.cursor()
cursor.execute("""CREATE TABLE athletes(
id INTEGER PRIMARY KEY AUTOINCREMENT UNIQUE NOT NULL,
name TEXT NOT NULL,
dob DATE NOT NULL)""")
cursor.execute("""CREATE TABLE timing_data(
athlete_id INTERGER NOT NULL,
value TEXT NOT NULL,
FOREIGN KEY (athelete_id) REFERENCES athletes)""")
connection.commit()
connection.close()

 10.Google App Engine http://code.google.com/appengine/
各App Engine Webアプリケーションにはappという名前が必要です.yamlのプロファイル
GAE Launcherを使用してWebアプリケーションを管理できます
GAEテンプレート技術はDjangoテンプレート技術に基づいている
selfを使用することができる.resonseはGAE Web応答を構築する
selfを使用することができる.request GAE Webアプリケーションのフォームデータへのアクセス
GET/POSTリクエストに応答する場合は、get()/post()メソッドで必要な機能を実現する必要があります.
put()メソッドを使用してApp Engine datastoreにデータを格納
 11.Input()受信入力(raw_input()python 2)
timeモジュールは標準ライブラリの一部として、時間フォーマット間の変換を完了するための多くの関数を含んでいます.
 12.本書には言及されていない他の問題
1)IDE
2)作用域
3)unitteset doctestのテスト
4)高度な言語プロパティlambda式短い1行匿名関数の作成
ジェネレータはyield式を使用して、プログラムの消費メモリを最小限に抑え、大規模なデータセットで反復器のような機能を提供します.
例外の定義独自の例外オブジェクトの作成
関数修飾子は、関数の起動と閉じるメカニズムに介入することによって、既存の関数の動作を調整します.
メタクラス
5)正規表現Regular Expressions
のように
phone_number ="Cell(mobile):(555)-918-8271"
results =re.search('\((\d{3}\)',phone_number) #              view plain  
area_code=results.group(1)
print('The area code is:' +area_code)

7)オブジェクトリレーションシップマッピングツール(object relational mapper,ORM)は、SQLを理解することなく、最下位のSQLベースのデータベースを使用します.
メソッド呼び出しとプロパティ検索により、SQLALchemy、Google App Engineのdatastore APIのオブジェクト向けインタフェースが提供されます.
スタイル的に主流Python ORMに似たAPI
NoSQLは、最下位のSQLベースのデータベースCouchDB MongoDBの処理を回避します.
8)GUIはtkinker,PyGTK,PyKDE,WxPython,PyQTとなる
9)3種類のバグを避けるあなたのバグ、私のバグ、スレッドバグ
グローバルインタプリタロック(Global Interpreter Lock,GIL)は、複数のプロセッサが使用可能であってもPythonが1つのインタプリタプロセスでのみ実行できることを要求します.
GIL制限を除去しない限り(本当に除去できる場合)、Pythonプログラミングでスレッドを使用しないでください.
10)その他Python書
Dive into Python 3複雑なPython 2モジュールをPython 3に移植する方法
Python for Unix and Linux System Administrationシステム管理
Python Essential Reference Pythonデスクトップ開発参考書
Learning Python 1200ページ、Python権威言語ガイド
Programming in Python 3には、いくつかの重要な技術、XML、解析、その他の高度な言語特性を使用する多くの例が含まれています.