python课程学习第一课

时间:2022-06-01 20:54:13
  • sax边读边解析,效率高;dom一次都读进来
  • pass:什么也不做,一般用于占位语句
  • def:定义一个函数
    简单爬虫
import requests
import xml.etree.ElementTree as ET
from xml.parsers.expat import ParserCreate
class DefaultSaxHandler(object):
    def __init(self,provinces):
        self.provinces=provinces
    def get_provinces(url):
        content=requests.get(url).content.decode('gb2312')
        start=content.find('<map name=\"map_86 id=\"map_86\">')
        end=content.find('<\map>')
        content=content[start:end+len('</map>')].strip()
        print(content)
        provinces=[]
        handler=DefaultSaxHandler(provinces)
        parser=ParserCreate()
        parser.StartElementHandler=handler.start_element
        parser.EndElementHandler=handler.end_element
        parser.CharacterDataHandlerhandler.char_data
        parser.Parse(content)
        return provinces
    def start_element(self,name,attrs):
        if name!='map':
            name=attrs['title']
            number=attrs['href']
            self.provinces.append((name,number))
    def end_element(self,name):
        pass  

    def char_data(self,text):
        pass
provinces=get_provinces('http://www.ip138.com/post')
print(provinces)

Python简介
1.优点

  • 简单,容易学习
  • 免费开源
  • 高级语言,细节隐藏
  • 解释性,可移植。一次编写,到处运行
  • 面向对象
  • 可扩展。可嵌入c/c++,或者使用c/c++提高性能
  • 扩展库

2.缺点
- 慢!
- shell脚本不友好

doc命令

  • pip install package(包名)
  • pip –verbose install package(若安装包失败可以打印出失败原因)
  • pip list(列出已安装的包)
  • pip install package(包名) -i –trusted-host site:改变安装源,从国内的镜像中安装。eg.pip install -i –trusted-host http://pypi.douban.com/simple/ pandas
  • 文件读写:文本/二进制
    文本:行读写
    二进制:偏移量+大小

  • 格式化字符串:print(‘%s,%d’%(‘aaa’,100))

    常用关键字

常量

  • True
  • False
  • None(相当于null)

对象和容器

  • class
  • import
  • from
  • del:从对象里删除一个元素

判断

  • if
  • elif
  • else
  • is
  • in:判断对象在不在容器里
  • assert:
    循环
  • for
  • while
  • continue:跳出当前循环
  • break
  • pass:什么都不做
    • 哪种情况下使用:若无pass则报错,用pass做填充
      class Empty(object):
      #pass
      def fun():
      return 100;
      print(fun())

异常

  • raise
  • try
  • except
  • finally
  • as

常用运算符

算术运算符

  • +-*/
  • %
  • **:指数运算
  • //:除法之后只取整数部分

比较运算符

  • >,>=
  • <,<=
  • ==
  • !=

逻辑运算

  • and
  • or
  • not

位运算 :无异或 可用not(y1==y2)来表示

  • >>右移一位除2
  • <<左移一位乘2
  • &
  • |
  • ^
print(0b1101|0b0101)#0b1101 13
print(0b1101&0b0101)#0b0101 5
print(0b1101^0b0101)#0b1000 8
def pow2(n):#n是不是2的指数
    return (n&(n-1))==0
print(pow2(16))
print(pow2(32))
print(pow2(33))

基本语法

  • 缩进
    try:
    x=100
    y=200#与上行不对齐
    except IndentationError:
    print('IndentationError')

  • 注释:

    • #:单行注释
    • ”’:多行注释
    • \n:换行
    • (一行写不完,分两行写但仍实际是一行):
str1='abc'\ 
            'def'
print(str)
print('hello\nworld')
str2='''hello world'''
print str2
print('hello world')#出错
  • 单双引号:单引号相当于双引号
print('abc')
print("abc")
print('abc"123"def')'''单引号中有双引号不用转义,双引号中有单引号不用转义,单引号中有单引号需要转义,双引号中有双引号需要转义'''
print("abc'123'def")
print('abc\'123\'def')
print("abc\"123\"def")
  • python3默认utf-8支持,Python2需声明
    若打开错误则在开头声明
# -*- coding:utf-8 -*-#coding:utf-8

Python2.x和3.x的区别

  • print函数:3.x一定要加()
  • Unicode:3.x默认使用unicode编码
  • 除法运算:3.x整相除也能得到浮点数结果
  • 异常:3.x只能抛出继承自BaseException的异常
  • xrange:3.x取消xrange(2.7中为种子生成器),range和xrange一样为实现为惰性求值(全生产放到list中,再从list中取值)
  • 二/八进制:3.x必须强制写成0b1011和0o7236。
  • 不等式:3.x取消了<>,只有!=
  • ‘’(正则表达式中):3.x中必须使用repr函数
  • 多个模块改名:Queue->queue,repr->reprlib
  • 数据类型
    • 3.x取消了long,统一为int
    • 新增bytes类型,并可与string相互转换
    • dict的keys/items/values方法返回迭代器,iterkeys函数被废弃,has_key被in取代
x=range(5)
print(type(x))#3.x中输出range类型,2.x中输出list类型
print((1024).to_bytes(2,byteorder='big'))#2个字节,高字节在左边
print((1024).to_bytes(4,byteorder='little'))#4个字节,高字节在右边
print((-1024).to_bytes(2,byteorder='big',signed=True))#负数
print((-1024).to_bytes(4,byteorder='little',signed=True))
print('%x'%(3124))
print('%d'%(0x0c34))