py2/py3区别, 列表生成式, 网络编程, socketserver, 线程, uuid模块

一. py2/py3区别
    - 编码&字符串
        字符串:
            py2:
                unicode         v = u"root"    本质上用unicode存储(万国码)
                (str/bytes)     v = "root"     本质用字节存储
            py3:
                str                v = "root"     本质上用unicode存储(万国码)
                bytes           v = b"root"    本质上用字节存储
        编码:
            py2:
                - ascii
                文件头可以修改:#-*- encoding:utf-8 -*-
            py3:
                - utf-8
                文件头可以修改:#-*- encoding:utf-8 -*-

            注意:文件是如何存储?
    - 继承
        py2: 经典类/新式类
        py3: 新式类
    - 范围
        py2:range/xrange
        py3:       range
    - 输入
        py2: v1 = raw_input('请输入用户名:')
        py3: v2 = input('请输入用户名:')
    - 打印
        py2: print 'xx'
        py3: print(123)

 

二. 列表生成式
v = [lambda x: x + i for i in range(10)]
print(v)   # 10个内存地址组成的列表

 

三. 网络编程

    1. 我的电脑有网卡,网卡里有mac地址

    2. 我到某个地方插上网线,路由器或交换机中的DHCP服务为我自动分配IP地址。
        IP: 192.168.13.84
             IPv4
                00000000.00000000.00000000.00000000
                0~255    0~255    0~255    0~255
             IPv6
                00000000.00000000.00000000.00000000.00000000.00000000
        子网掩码:255.255.255.0
            192.168.13.84
            255.255.255.0   # 也可以是255.255.254.0

            192.168.12.84
            255.255.255.0
            将挡住的IP位数作为网段。
            未挡住的部分作为可变的值。

        网关IP:192.168.13.1

        局域网内、城域网、广域网:
            广播
            单播
            广播风暴
            arp协议


    DNS
        网络连接:
            - 域名解析
                www.bitfinex.com  127.91.64.33
            - 连接
                sk = socket.socket()
                sk.connect(('47.95.64.113',80))
                ...
        问题来了,域名和IP的对应关系在哪里?
            本地:
                Win本地电脑:
                    C:\Windows\System32\drivers\etc\hosts
                        11.11.11.11 bitifnex.com
                Linux/Mac电脑:
                    /etc/hosts

            DNS服务器:全球顶级DNS服务器13台
                www.bitfinex.com  127.91.64.33

        创业:
            a. 租一个服务器+公网IP
            b. 租域名
                域名+IP解析

 

四. socketserver

    注意:如果想要提高效率可以使用多线程。

    """
    pip3 install requests   # 需要安装
    """
    import threading
    import requests
    import uuid

    url_list = [
        'https://www3.autoimg.cn/newsdfs/g28/M05/F9/98/120x90_0_autohomecar__ChsEnluQmUmARAhAAAFES6mpmTM281.jpg',
        'https://www2.autoimg.cn/newsdfs/g28/M09/FC/06/120x90_0_autohomecar__ChcCR1uQlD6AT4P3AAGRMJX7834274.jpg',
        'https://www2.autoimg.cn/newsdfs/g3/M00/C6/A9/120x90_0_autohomecar__ChsEkVuPsdqAQz3zAAEYvWuAspI061.jpg',
    ]

    def task(url):
        """
        1. DNS解析,根据域名解析出IP
        2. 创建socket客户端    sk = socket.socket()
        3. 向服务端发起连接请求 sk.connect()
        4. 发送数据(我要图片) sk.send(...)
        5. 接收数据            sk.recv(8096)
        接收到数据后写入文件。
        """
        ret = requests.get(url)
        file_name = str(uuid.uuid4()) + '.jpg'
        with open(file_name, mode='wb') as f:
            f.write(ret.content)

    for url in url_list:

        t = threading.Thread(target=task,args=(url,))
        t.start()

 

五. 线程

import time
import threading


def task(n):
    print('开始执行任务:',n)
    time.sleep(10)
    print('...')
    print('任务%s 执行完毕:'%n)

while True:
    name = input("请输入任务:")
    t = threading.Thread(target=task,args=(name,))
    t.start()

 

六. uuid模块

import uuid
v = str(uuid.uuid4())
print(v)

 

posted @ 2018-09-06 21:34  NachoLau  阅读(220)  评论(0编辑  收藏  举报