三个学生吧 关注:3贴子:241

暑假8月——python学习记录贴

只看楼主收藏回复



1楼2016-08-08 20:00回复
    面向对象的编程:
    1.类和对象
    对象有属性和方法 同类的对象的方法是一样的(继承和多态) 而对象间的属性可以不同 一种数据类型可以看作一个类
    通过class 类名(父类): 的方式可以继承一个类(正常为object)
    通过 变量名 = 类名(参数): 的方式可以建立类的一个对象
    通过 __init__(self,参数):
    self.... = ... 可以给类绑定属性
    通过 def 方法名(self 参数): 可以定义对象的方法
    这样 在操作对象的时候,直接调用方法(接口)而调用者不必知道内部细节,而且代码写完了以后拓展不会改变原来的代码
    2.访问限制
    在属性的名称前面加上两个下划线__表示变量是private,无法从外部访问
    3.继承和多态
    子类可以继承父类的所有方法,也可以覆盖父类的方法;(继承)如果一个实例的数据类型是某个子类,那么他的数据类型也可以被看作是父类(多态)


    2楼2016-08-25 16:19
    回复
      第五章 函数式编程\高级编程 允许传入函数、返回函数
      第一节 高阶函数
      1.map(函数,序列) 将函数作用于序列的每一个元素上并返回一个序列
      2.reduce(函数,序列) 传入的函数必须包括两个参数,reduce把结果做累加
      3.filter(函数,序列) 根据传入的函数的返回布尔值决定是否保留这个元素,返回一个序列,用作筛选
      4.sorted(函数=函数,序列) 只传入序列时进行排序,也可以自定义算法
      第二节 返回函数 函数的返回值还是一个函数,调用的时候这叫做闭包
      第三节 匿名函数 (基本没用..)
      f = lambda x : x + x (匿名函数没有名字,使用关键词lambda定义,x是参数,返回值就是表达式的结果
      第四节 装饰器 (懂就行,不会写...)
      装饰器接受所使用的函数为参数,传入内部,一般会经过一系列计算装饰这个函数,然后重新返回原来的函数进行计算,装饰器使用语法糖—— ‘@函数名 ’的方法定义 ,放在一个函数定义的前面


      4楼2016-08-26 11:25
      收起回复
        第六章 模块
        1.程序的标准写法
        #!/usr/bin/env python
        # -*- coding: utf-8 -*-
        2.最后一行这样写,引入模块就不会直接执行,要用test方法才能执行(面向对象了...)
        if __name__=='__main__':
        test()


        5楼2016-08-26 11:30
        回复
          第八章 面向对象的高级编程 我们也先跳过吧,看不懂....


          6楼2016-08-26 11:30
          回复
            第十节 IO编程 这个就不看廖老师的了
            1.读写文件
            try:
            f = open('text.txt','r') # 标示符'r'表示读
            str = f.read()
            print(str)
            finally
            f.close() #必须要关闭!!!
            也可以用with来写
            with open("test/test.py", "a") as file_obj:
            file_obj.write("#/usr/bin/env python") 推荐写法!!!!
            补充一下标识符的种类
            w 以写方式打开,
            a 以追加模式打开 (从 EOF 开始, 必要时创建新文件)
            r+ 以读写模式打开
            w+ 以读写模式打开 (参见 w )
            a+ 以读写模式打开 (参见 a ) 一般用这个!!
            2.shell命令
            os.system() 引入os模块,这样写就可以直接执行shell命令了,所以一些文件操作我就省略啦!


            8楼2016-08-26 14:21
            回复
              第十一章 进程和线程
              主要就是一个分布式进程,主要用到multiprocessing模块的managers子模块,不准备深究,起码目前的爬虫肯定不用分布式...


              9楼2016-08-27 10:49
              回复
                第十六章 网络编程
                1.tcp/ip 这个概念大部分都知道了,tcp是联络协议,ip是传输协议
                2.tcp编程 # 主要了解
                一个socket就相当于一个网络连接.python有socket库,也可以传输数据
                服务端相对复杂,需要一个父进程监听端口,然后调用子进程回复信息
                3.UDP编程
                UDP和TCP是相对的概念,UDP也是传输协议,但是UDP的传输速度快得益于可能会丢包...没有握手协议..
                UDP的端口和TCP不冲突


                13楼2016-08-27 17:16
                回复
                  第十七章 电子邮件
                  1.电子邮件 电子邮件和普通邮件差不多,发送过程如下:
                  首先,由电脑上的软件(MUA:邮件用户代理)发到网易等等的服务商(MTA:邮件传输代理),再发到对方的服务商(MTA),投递到邮箱空间(MDA:邮件投递代理),收件人通过MUA把MDA里面的数据取回。
                  MUA和MTA的协议有POP3和IMAP,IMAP先进一点,可以直接操作MDA里面的数据
                  编程就是
                  编写MUA把邮件发到MTA;
                  编写MUA从MDA上收邮件。


                  14楼2016-08-27 17:26
                  收起回复
                    第十八章 数据库
                    程序运行的时候,数据都是在内存中的。当程序终止的时候,通常都需要将数据保存到磁盘上,无论是保存到本地磁盘,还是通过网络保存到服务器上,最终都会将数据写入磁盘文件。
                    数据库应运而生,是方便数据储存和查询的……的……的东西……
                    常见的数据库是SQL,本章节使用的软件是mysql,本章作为了解


                    来自iPhone客户端15楼2016-08-27 19:53
                    收起回复
                      1.sqlite SQLite是一种嵌入式数据库,它的数据库就是一个文件。由于SQLite本身是C写的,而且体积很小,所以,经常被集成到各种应用程序中,甚至在iOS和Android的App中都可以集成。
                      Python就内置了SQLite3,所以,在Python中使用SQLite,不需要安装任何东西,直接使用。
                      在使用SQLite前,我们先要搞清楚几个概念:
                      表是数据库中存放关系数据的集合,一个数据库里面通常都包含多个表,比如学生的表,班级的表,学校的表,等等。表和表之间通过外键关联。
                      要操作关系数据库,首先需要连接到数据库,一个数据库连接称为Connection;
                      连接到数据库后,需要打开游标,称之为Cursor,通过Cursor执行SQL语句,然后,获得执行结果。


                      来自iPhone客户端16楼2016-08-27 20:00
                      收起回复
                        第十九章 web开发
                        历史:从cs架构到bs,所以现在大部分应用都是web应用!
                        1.http 专为html设计 有head和body,head请求头或者响应头,body是数据
                        2.html 如果要学习Web开发,首先要对HTML、CSS和JavaScript作一定的了解。HTML定义了页面的内容,CSS来控制页面元素的样式,而JavaScript负责页面的交互逻辑。CSS javescript 都可以嵌入html
                        都可以去学学,我们通常称它们叫前端开发


                        来自iPhone客户端17楼2016-08-27 20:31
                        回复
                          3.WSGI接口
                          所以,最简单的Web应用就是先把HTML用文件保存好,用一个现成的HTTP服务器软件,接收用户请求,从文件中读取HTML,返回。Apache、Nginx、Lighttpd等这些常见的静态服务器就是干这件事情的。
                          如果要动态生成HTML,就需要把上述步骤自己来实现。不过,接受HTTP请求、解析HTTP请求、发送HTTP响应都是苦力活,如果我们自己来写这些底层代码,还没开始写动态HTML呢,就得花个把月去读HTTP规范。
                          正确的做法是底层代码由专门的服务器软件实现,我们用Python专注于生成HTML文档。因为我们不希望接触到TCP连接、HTTP原始请求和响应格式,所以,需要一个统一的接口,让我们专心用Python编写Web业务。
                          这个接口就是WSGI:Web Server Gateway Interface。
                          WSGI接口定义非常简单,它只要求Web开发者实现一个函数,就可以响应HTTP请求。我们来看一个最简单的Web版本的“Hello, web!”:


                          来自iPhone客户端18楼2016-08-27 20:32
                          回复
                            def application(environ, start_response):
                            start_response('200 OK', [('Content-Type', 'text/html')])
                            return '<h1>Hello, web!</h1>'
                            上面的application()函数就是符合WSGI标准的一个HTTP处理函数,它接收两个参数:
                            environ:一个包含所有HTTP请求信息的dict对象;
                            start_response:一个发送HTTP响应的函数。
                            在application()函数中,调用:
                            start_response('200 OK', [('Content-Type', 'text/html')])
                            就发送了HTTP响应的Header,注意Header只能发送一次,也就是只能调用一次start_response()函数。start_response()函数接收两个参数,一个是HTTP响应码,一个是一组list表示的HTTP Header,每个Header用一个包含两个str的tuple表示。
                            通常情况下,都应该把Content-Type头发送给浏览器。其他很多常用的HTTP Header也应该发送。
                            然后,函数的返回值'<h1>Hello, web!</h1>'将作为HTTP响应的Body发送给浏览器。
                            有了WSGI,我们关心的就是如何从environ这个dict对象拿到HTTP请求信息,然后构造HTML,通过start_response()发送Header,最后返回Body。


                            19楼2016-08-28 10:54
                            回复
                              不过,等等,这个application()函数怎么调用?如果我们自己调用,两个参数environ和start_response我们没法提供,返回的str也没法发给浏览器。
                              所以application()函数必须由WSGI服务器来调用。有很多符合WSGI规范的服务器,我们可以挑选一个来用。但是现在,我们只想尽快测试一下我们编写的application()函数真的可以把HTML输出到浏览器,所以,要赶紧找一个最简单的WSGI服务器,把我们的Web应用程序跑起来。
                              好消息是Python内置了一个WSGI服务器,这个模块叫wsgiref,它是用纯Python编写的WSGI服务器的参考实现。所谓“参考实现”是指该实现完全符合WSGI标准,但是不考虑任何运行效率,仅供开发和测试使用。
                              【这边不好自己总结,直接上来辣】


                              20楼2016-08-28 10:56
                              回复