Head First Python 学习笔记

终于大致的将这本书看完了,学习过程中写了一些笔记,主要记了书中每章的一些相关内容

虽然是2012年的书 不过具体的内容还是很有参考价值的,以下序号为每章的内容。

1.BIF isinstance()指示标识符是否指向某个指定类型的数据对象  len() 缩进
2.setup.py 提供了模块的元数据,用来构建、安装和上传打包的发布。
  form module import function
  python的主命名空间为__main__
  内置函数的命名空间为__buildins__并自动包含在每一个python程序中
  range()可与for联用固定迭代次数。
  为函数参数提供缺省值(在定义时)则该函数参数就为可选的。
  PyPi.python.org
3.seek()可用来将文件退回到起始位置
  split()可将一个字符串分解为一个子串列表
  数据不符合期望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]
  要访问一个列表中的多个数据项,可以使用分片。
  例如: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:设置为application/json
  
  urllib和urllib2库模块可以用来从一个程序向web服务器发送编码的数据
  
  import sys
    sys.stderr sys.stdin sys.stdout
9.  SQLite
过程:连接-创建游标-利用游标交互-提交or回滚-关闭并撤销游标
管理工具 sqlite3命令行工具
本书使用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() python2)
time模块作为标准库的一部分,包含了大量函数可以完成时间格式之间的转换
 12.本书没有提到的其他问题
1)IDE
2)作用域
3)测试 unitteset doctest
4)高级语言特性 lambda表达式创建简短的单行匿名函数
生成器 使用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种bug 你的bug、我的bug、线程bug
   全局解释器锁(Global Interpreter Lock,GIL) 要求Python只能在一个解释器进程中运行,即使有多个处理器可用。
   除非去除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、解析以及其他高级语言特性


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值