zoukankan      html  css  js  c++  java
  • 2019.04.12 Head First

     

    第一节 认识python

     

    python.exe -V

     

    python 会进入解释器

     

    quit()命令会退出解释器

     

    IDEL,一个python的集成开发环境,能够利用颜色突出语法的编辑器,一个调试工具,Python Shell 以及一个完整的Python3在线文档。

     

    我装了python3.5,那个就是IDEL呀。意思是说我安装了python3.5就是一个IDEL,因为Windows是不带有python解释器的

     

    Mac os  Linux是带有的解释器,解释器就是在终端打开的呀!

     

     

     

    释义1:IDLE 是一个纯 Python 下自带的简洁的集成开发环境(IDE) [1] 。

     

     

     

    那么问题来了 PyCharm是什么也是一个IDEL吗

     

    PyCharm是一种Python IDE,带有一整套可以帮助用户在使用Python语言开发时提高其效率的工具,比如调试、语法高亮、Project管理、代码跳转、智能提示、自动完成、单元测试、版本控制。此外,该IDE提供了一些高级功能,以用于支持Django框架下的专业Web开发。

     

     

     难道不需要为列表声明类型信息吗?

     

    为什么不要,因为Python的变量标识符没有类型

     

    数据项自下而上堆放

     

     

     

    列表方法:len()  append()  pop()  extend()  remove()  insert()

     

     

     

    有的有返回值有的没有返回值

     

     

     

    什么?在列表中混合不同的类型?可以在列表中存储任意类型的数据

     

     

     

    当我插入了之后,还要考虑到,列表扩大了

     

     

     

    python 的for循环就是为了处理列表和Python中的其他迭代结构。列表就是最常用的迭代数据结构,

     

    for while if  走天下

     

    有意思,在列表中存储列表

     

    判断数据类型,isinstance(names,list)判断names是不是list

     

    看其如何从列表引到循环再到函数

     

     

     

     

     

    不要重复代码;应当创建一个函数

     

    按照他的做法 i k 可以一样吗?  引入了递归

     

    利用函数和递归,你已经解决了先前处理列表的代码中存在复杂性问题。

     

    列表,for,函数,递归   (我的第一节python工具箱)isinstance

     

     

     

    第二节 共享你的代码

     

     

     

    我真的想分享……但是如果没有模块我怎么起作用呢?

     

    可重用的代码固然不错,不过可共享的模块更棒

     

    》》模块允许你合理组织代码来实现最优共享

     

    》》发布工具允许你向全世界共享你的模块

     

    我听说第三方Python模块都放在PyPI(Python Package Index,包索引)上

     

    Python标准库里已经预加载了大量模块

     

    模块就是一个包含Python代码的文本文件。对模块的主要需求就是要求文件问以.py结尾,

     

    import 语句告诉Python将nester.py模块包含在程序中。

     

    import nester  会报错  说print_lol is not defined  引出Python的模块实现命名空间

     

     

     

    从模块发布到注释,到引入,到命名空间

     

     

     

    没错,命名空间就像是姓氏。假设你目前正在有个命名空间中,如果想指示另外一个模块命名空间中的某个函数,就需要用该模块的命名空间对这个函数的调用做出限定。:首先是模块名,然后是一个点好,在后面是函数名

     

    如果使用from nester import print_lol,会指定的函数(这里是print_lol)增加到当前命名空间中,这样一来,就不必在使用命名空间限定。

     

    选择包含字母(大写和小写),数字和特殊字符的强密码。避免常用词或重复。

     

    以后大写第一个大写,特殊字符@

     

    然后又告诉我们参数要一致,因为有了参数之后就会变成必填的了

    然后又出了一个可选参数,增加了一个缺省值是的“level”变成一个可选的参数   level = 0

     

     

    Python术语:

        PyPI  就是Python包索引(Python package index)这个网站很值得访问的

        Python内存中的名字就存放在“命名空间”中

        Python的主命名空间名为__main__

    模块(python代码的文本文件)

     

     

     第三章 文件与异常

     

    程序模型:首先是输入数据,进行处理,然后存储,显示,打印或传输

     

     

     

    如何从文件中读取数据呢?with open(‘打开的文件’)as f ?

     

                  f.read()

     

    Python中的基本输入机制是基于行的:open()与for语句结合使用     打开,处理,关闭

     

    sketch.py 什么

    项目描述

    基本

    这个工具可以用来以图形涂鸦的形式“记笔记”,就像用铅笔,钢笔,Sharpie(tm)或类似的东西在一张小纸上画它们一样。它没有按设计提供任何特殊选项。你得到一个画布,可以画上它,用一个固定大小的黑色笔......就是这样。

    如果你正在寻找更多花哨的东西,那里有很多好的绘图应用程序(gimp,inkscape,......)。去挑选其中一个,例如,如果您需要特殊的刷子形状,并附带动力学。

    我尽量保持pysketch的简约越好,这样我可以专注于什么我画画,而不是 如何我画它。

     

     

     

    the_file  = open(sketch.py)-------打开

     

    # Do something with the data

     

    #in "the_file".   ----- 处理

     

    the_file.close()   ----关闭

     

    print(data.readline(),end = ' ')  ???   printBIF自带  end = ‘’   ???

     

     

     

    split()方法返回一个字符串列表,这是多重赋值,可以赋值一个目标标识符列表    以什么进行分开,所以是有参数的,也有返回值

     

    (role,line_spoken) = each_line.split(":")

     

    Python实际上右两种类型的列表:一种是可以改变的列表(用中括号包围),另一种一旦创建就不能改变(用小括号包围)。后者一种不可变列表,叫元祖。可以认为元祖等同于列表,可以认为是一个常量列表,因为里面的数据不可以改变

     

    find()可以找到字符串的子串,会返回它的索引位置,找不到返回-1

     

     

     

    if not each_line.fine(':')== -1:

     

     

     

    文件打开-->引出异常try/except   可能出错的代码/错误恢复代码

     

    你疯了吗?你真的让错误发生?

     

     

     

    try:

     

      ....

     

    except:

     

      pass

     

    忽略了这个错误,也不会显示这个代码,就像前面的 if  一样   选择跳过,显示正确的代码

     

    if else  是分析了这出错代码的原因然后解决,那要是分析不出来呢?

     

     

     

    if  os.path.exist('sketch.txt'):       os中提供的检测文件是否存在

     

     

     

    记住在可能出现错误之前的代码加上try

     

     

     

    需要以一种不那么一般化的方式使用except

     

    特定指定异常    except ValueError

     

           except IOError

     

     

     

    open()

     

    readline()

     

    seek()

     

    close()

     

    split()

     

    tuple

     

    ValueError(数据不符合期望的格式是会出现)

     

    IOError(数据无法正常访问会出现,可能数据文件被移走或者重命名)

     

    help()

     

    find()

     

    not

     

    try/except

     

    pass

     

     

    "腌制"数据  pickle  pickle引擎  保存和恢复数据

    用dump保存  用load恢复

    ‘wb’ b:告诉python以二进制模式打开数据文件

     

    with open('mydata.piclke','wb') as mysavedata:
    pickle.dump([1,2,'three'],mysavedata)

    因为没有创建过mydata这个文件,所以系统会帮你创建

    第一行[0]

    最后一行[-1]

     

    pickle的通用I/O才是上策   恢复列表吗?  那还支持其他的那些数据结构呢

     

    第四章术语

    “不可变数据类型”

    “腌制”  “解除腌制”

    strip()  空白符

    finally

    except

    str()

    locals()返回当前作用域中的变量集合

    in 操作符用于检查成员关系

    “+”连接字符串  数字相加

    with

    sys.stdout标准输出

    pickle.dump()

    pickle.load()

     

     

    第五章处理数据

    split(‘,’)这会创建一个列表

    整形吗   字符串吗

    排序 sort()  sorted()

    方法串链  函数串链

     

    默认是升序的, 传入参数reverse = True

     

    推导列表

      clean_mikey = [sanitize(each_t) for each_t in mikey)]  遍历后面的项,然后传给前面的函数处理      不用使用append方法   不用再创建一个新的列表

      叫clean_mikey了

    对列表中的每一项完成一个转换,    函数串链

    一次只处理一个数据   不能再嵌套sorted()了,可以在clean_mikey  做排序吧

     

    访问列表前三  james[0:3]

    去除重复项呢  这不是转换了  应该是一个过滤器

    if in   去处理   不在列表里就添加

     

    集合的数据项是无序的,而且不允许重复   如果重复了,python会将其忽略

    使用set()BIF创建一个空集合,这是工厂函数的一个例子:

      distances= set()  有意思的工厂函数   和有意思的集合  和有意思的内置函数

    集合  字典  都是用{}的

     

    sortedBIF  集合  列表推导

     

    第五章  术语

    原地 排序  复制排序

    方法串链  函数串链(从右向左读)

    列表推导  分片  集合

    sort sorted   reverse = True

      new_1 = []

      for i in old_1:

        new_1.append(len(i))

      使用列表推导

      new_1 = [len(t) for in old_1]

    my_list[3:6]  列表索引3到6(但不包括)

    使用set()工厂方法可以创建一个集合

     

    第六章  定制数据对象

    使用字典关联数据

    任何东西都可以放到列表中,不论什么

    创建两个空字典 cleese = {}   palin = dict()  一个使用大括号创建  一个工厂函数创建

    pop()我怎么记得删除的最后一个的、

     

    从字典到类   将代码及其数据打包在类中

     

    面向对象编程模型,提供了一种方法允许将代码及其处理的数据定义成一个雷。一旦有了类定义,就可以用他来创建(或实例化)数据对象,

    他会继承类的特性

    在面向对象世界里,你的代码通常称为类的方法(method),而数据通常称为类的属性(attribute)。实例化的数据对象通常称为实例(instance)

     

    每个定义的类都有一个特殊的方法,名为__init__(),这个方法控制如何初始化对象

     

    Python中没有定义构造函数“new”

     

    如果没有这个self赋值,Python解释器无法得出方法调用要到那个对象实例。

    方法是共享的,而属性不共享。

    每个方法的第一个参数都是self

    self应该是那个实例对象  

    d = Athlete("Holy Grail")       Athlete.__init__(d,"Holy Grail")

    d.how_big()     Athlete.how_big(d)     d:目标标识符或实例

    不把实例对象传进去,他不知道是哪个。所以要写self

     

    不同的内存地址上

     

    append()  extend()

     

    你已经把代码与数据打包在一起,并且创建了一个定制类,

     

    如果有办法扩展一个内置类来增加定制的属性,那该多好!

    今晚话题继承,也就是说,他看起来很像他的父亲

    定制类  继承类

     

    class NamedList(list):

      def __init__(self,a_name):

        list.__init__([])     注意这里的写法  还有位置  为什么要这里  证明我要继承你了  现在你就是我的了

        self.a_name = a_name

    意思是现在我就是list  list就是我  我还是我 我还有我的属性

    Jonny = NmaeList(“John paul”)

    type(johnny)  dir(johnny)查询拥有的方法,属性

    “johnny”可以做列表能做的所有事情,另外还可以在“name”属性中存储数据

    johnny是个list还可以迭代    for  attr in  johnny:

    这么有意思吗?继承

    那我可以从任何内置的类型继承吗?

    Python支持多重继承吗     可以

     

    第六章 术语

    字典  键 值

    “self” 这是一个方法参数,总是指向当前对象实例

     

    第七章Web开发

    所有人都想访问教练的数据  最好的办法是可以把你的程序防砸iWeb上

    dump的第一个参数是存入的数据内容,第二参数是存入的文件名

     

    CGI网关接口允许Web服务器运行一个服务器端程序,称为CGI脚本

     

    通用网关接口(Common Gateway Interface/CGI)是一种重要的互联网技术,可以让一个客户端,从网页浏览器向执行在网络服务器上的程序请求数据。CGI描述了服务器和请求处理程序之间传输数据的一种标准。

     

    如果在运行一个基于Unix系统(Linux  Mac OS)

     

    这个pickle有意思啊

    https://www.cnblogs.com/abobo/p/8080447.html

     

     

    第七章术语

    web应用  Web请求   Web响应

    CGI--通用网关接口:允许Web服务器运行一个服务器端程序

    大家都知道,从一个房间走到另一个房间,必然要经过一扇门。同样,从一个网络向另一个网络发送信息,也必须经过一道“关口”,

    这道关口就是网关。顾名思义,网关(Gateway)就是一个网络连接到另一个网络的“关口”。

     

     

    第八章 移动应用开发

    下载软件开发包(SDK)

    要配置SDK和模拟器需要做两件事;增加一个Android平台,另外创建一个Android虚拟设备(也称为AVD)

    Android Studio 的安装配置详细过程

    https://www.cnblogs.com/xiadewang/p/7820377.html

     

    pickle  json

     

    @property修饰符   这样一来,对于类用户来说这个方法就像是一个新的属性

      @property

      def as_dict(self):

        return({'name':self.name,

            'DOB':self.dob,

            'Top3':self.top3})

    JSON库模块允许将Python的内置类型转换为基于文本的Json数据交换格式

    json.dumps()可以创建一个Python类型的字符串版本

    json.loads()可以从一个Json字符串创建一个Python类型

    如果数据使用Json发送,需要将其Content-Type:设置为 application/json

    urllib和urllib2 库模块(都在Python 2 中提供)可以用来从一个程序向Web服务器发送编码的数据

    (使用urlencode()和 urlopen()函数)

    sys模块提供了sys.stdin,sys.stdout和sys.stderr输入流

     

     

    第九章管理数据 

      处理输入

    Python 包括SQLite

    利用Python的数据库API

    连接:建立与所选数据库后台的一个连接

    创建:创建一个游标,通过连接与数据通信。

    交互:利用游标,使用SQL管理数据

    知道为什么API叫接口了

    这些都是python底层的源码吗?比较底层吧

     

    Google App Engine 是一种让您可以在 Google 的基础架构上运行您的网络应用程序。

    Google App Engine 应用程序易于构建和维护,并可根据您的访问量和数据存储需要的增长轻松扩展。

    使用 Google App Engine,将不再需要维护服务器:您只需上传您的应用程序,它便可立即为您的用户提供服务。

     

    Google提供了这个Web应用托管服务

     

    我们没有谈到的十大问题:

      1.使用一个“专业”IDE”本课一直使用的是IDLE

      2.处理作用域 Python允许你在函数中访问和读取一个全局变量的值,但是不能修改。Python看到这里的赋值是,会查找一个名为name的局部

       变量,但是找不到  要修改就要表明意愿

        name = 123

        def what_happens_here():

          print(name)

          global name 

          name = name +'is a great book'

        what_happens_here()

        print(name)

       3.测试

          if __name__ = "__main__":

            import doctest

            doctest.testmod()      如果代码作为一个模块导入,这段代码不会运行。如果从命令行运行你的模块,则会运行测试

    您将从本书学会什么?

      你会迅速掌握Python的基础知识,然后转向持久存储,异常处理,Web开发,SQLite,数据加工和Google

      App Engine。你还将学习如何为Android编写移动应用,这都要归功于Python为你赋予的强大能力。

     

     

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            

     

     

     

     

     




  • 相关阅读:
    【python】第一个爬虫:用requests库爬取网页内容
    【python】UDP协议编程
    【python】体育竞技分析:预测球队比赛成绩
    【python】手绘图制作
    【python】成绩表雷达图
    【python】numpy库和matplotlib库学习笔记
    【python】PIL库之图片处理
    【python】PIL库学习总结
    【python】利用jieba中文分词进行词频统计及生成词云
    汉诺塔问题
  • 原文地址:https://www.cnblogs.com/Py-king/p/10694335.html
Copyright © 2011-2022 走看看