zoukankan      html  css  js  c++  java
  • Python 语法学习笔记

    一、变量

    1. 元组:元组用 () 标识。内部元素用逗号隔开。但是元组不能二次赋值,相当于只读列表。
    1. 字典:相当与C++中的map,字典中值不允许用到变量 [头下标:尾下标] 切割

    二、运算符

    1. Python的and, or, not 对应了其他语言的双与&&、双或||、非!
    1. 没有++, --运算符
    1. Python特有的运算符:
      • in, not in, 判断某个成员是否存在于列表中a in list
      • is, not is, 判断两个对象是否是否指向同一块内存    ---  与== 和 != 的区别是:is 用于判断两个变量引用对象是否为同一个(同一块内存空间), == 用于判断引用变量的值是否相等。

    三、控制结构(选择,循环)

    1. for循环其实是C++的增强for循环或者Java中的范围for循环
    1. 循环使用else语句
    • for … else 表示这样的意思,for 中的语句和普通的没有区别,else 中的语句会在循环正常执行完(即 for 不是通过 break 跳出而中断的)的情况下执行,while … else 也是一样
    1. Python的pass语句
    • pass 不做任何事情,一般用做占位语句,该语句的使用场景是:如果定义一个空函数程序会报错,当没有想好函数的内容是可以用 pass 填充,使程序可以正常运行。

    四、函数

    函数中不能同时使用变量名相同的局部变量和全局变量

    五、异常

    Python3.x 之后获取异常参数要加一个 as , 比如:except ValueError as Argument:
    python3.x : raise Exception("Invalid") --- pythone2.x: raise Exception, "Invalid level"

    六、面向对象

    1. self 相当于其他语言的this, 每个成员方法都必须把这个变量作为第一参数,selft的变量名可变
    1. 定义类时声明的成员其实是类成员,也就是其他语言的静态成员,非静态成员可以不显示声明
    1. 成员可以直接通过对象实例. 出来, 也可以使用以下函数的方式来访问属性:
      • getattr(obj, name[, default]) : 访问对象的属性。
      • hasattr(obj,name) : 检查是否存在一个属性。
      • setattr(obj,name,value) : 设置一个属性。如果属性不存在,会创建一个新属性。
      • delattr(obj, name) : 删除属性。
    1. 和其他语言一样,如果子类没有重写父类的某个方法,那么子类就会将这个方法继承下来,如果重写了某个方法,那么这个新方法会覆盖从父类继承下来的方法,构造方法也不例外。如果子类方法中要调用父类的方法,则需要按下面的格式来调用父类的方法:
    • super(子类,self).methodname(参数1,参数2,....)
    1. 获取私有属性的方式:
      1. obj._类名__私有属性, 也可以用这种方式调用私有方法。
      1. getattr(v1, '_Vector__secretCount')
    • python并没有真正的私有化属性,而是修改了属性名,把属性名修改成了_类名__属性名, 通过访问正确的属性名可以访问到这个私有属性,所以python的私有化属于伪私有。
    1. python的构造方法不能重载,可以给所有属性参数添加默认值,这样可以达到传其他个数的参数的目的

    七、格式化输出的三种方式

    1. print(str%(var1, var2...)
    1. print("...{ }...{ }..".format(var1, var2))
    • 其中花括号可以有以下几种写法
    • (1)不带编号,即“{}”
    • (2)带数字编号,可调换顺序,即“{1}”、“{2}”
    (3)带关键字,即“{a}”、“{tom}”, format()函数中必须要指明变量名和值
    1. print(f"...{var1}...{var2}..."), 这个其实是2的变形

    八、内置函数

    1. 函数 len() 返回列表的长度,即元素的个数。
    1.  range返回一个序列的数。rang(10, 20), range(10), range(10, 20, 2)
    1. id(),返回对象的内存地址
    1. .....

    九、使用 requests 抓取网页数据

    request介绍
    Requests 是⽤Python语⾔编写,基于urllib,采⽤Apache2 Licensed开源协议的 HTTP 库。它⽐ urllib 更加⽅便,可以节约我们⼤量的⼯作,完全满⾜HTTP测试需求。
    ⼀句话——Python实现的简单易⽤的HTTP库
    上面所有方法均返回一个response对象,这个response对象有以下属性,可以通过查看response的下列属性来获取和判断页面的各种信息
    除了以上属性外,还有一个cookies属性用的也挺多的。
    使用方式:
    1 import requests
    2 response = requests.get("https://www.baidu.com")
    3 print(response.cookies)
    4 print(response.text)
    使用resquests的一个案例
    不登陆直接使用request访问这个发帖页面,会被拦截,跳转到登陆页面
    1 import requests
    2 # 下面这个url是一个发帖页面,这个页面需要登陆后才能访问
    3 response = requests.get("http://39.106.217.243:8081/bbs/post/transitKind?kind=0")
    4  
    5 # 答应状态码和响应内容
    6 print(response.status_code)
    7 print(response.text)
    运行结果符合预期,没有获取到发帖页面的内容,而是登陆页面的内容
    先使用session携带登陆信息访问登陆接口页面,然后再让session访问上面的发帖页面,成功获取到发帖页面的源代码
     1 # 1. 创建session对象, 用来保存cookie值
     2 session = requests.session()
     3  
     4 # 2. 处理headers
     5 headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36"}
     6  
     7 # 3. 需要登陆的用户名和密码
     8 data = {"username":"tom", "password":"123"}
     9  
    10 # 4. 发送带有用户名和密码的请求,并获取登陆后的cookie值,保存在session中
    11 session.post("http://39.106.217.243:8081/bbs/user/login", data = data)
    12  
    13 # 5. session包含用户登陆后的cookie值,可以直接访问需要登陆的才能访问的发帖页面
    14 response = session.get("http://39.106.217.243:8081/bbs/post/transitKind?kind=0")
    15  
    16 # 答应状态码和响应内容
    17 print(response.status_code)
    18 print(response.text)
    下面是获取到的发帖页面中一个表单
    python 获取url中的参数列表
    1 import urlparse
    2 urldata = "http://en.wikipedia.org/w/api.php?action=query&ctitle=FA"
    3 result = urlparse.urlparse(urldata)
    4 print result
    5 print urlparse.parse_qs(result.query)
    输出
    ParseResult(scheme='http', netloc='en.wikipedia.org', path='/w/api.php', params='', query='action=query&ctitle=FA', fragment='')
    {'action': ['query'], 'ctitle': ['FA']}

    参考:

    十、Assert断言

    断言作用:

    检查条件,不符合就终止程序

    用法:

    下面两个程序是等价的,一个是用抛出异常的raise来实现的,另一个是用断言来实现的
    1 a = -1
    2 if not a > 0:
    3     raise AssertionError("a 不合法")
    1 a = -1
    2 assert a > 0, "a不合法"

    参考

    List常用函数

    1. 添加元素append(val)
    1. 插入元素insert(index, val)
    1. list的长度len(list)
    1. list的最小值min(list)
    1. list的最大值max(list)

    collections.Counter

     
  • 相关阅读:
    UVA307Sticksdfs+剪枝
    UVA 10382 Watering Grass 贪心+区间覆盖问题
    H265网页视频播放器播放H265编码录像视频文件如何减缓卡顿情况?
    RTMP/RTSP/GB28181协议视频平台授权页面配置完成后,控制台出现报错如何解决?
    通过私有化部署自建一套视频流媒体服务器平台,如何解决视频播放延时卡顿问题?
    RTSP/RTMP/HTTP/HLS协议视频流媒体播放器EasyPlayerRTSP安卓版本,切换视频流黑屏怎么办?
    【解决方案】设备众多/品牌不一/协议复杂的需求下如何搭建智慧工地视频集中管控平台,实现建筑工程新形态?
    RTMP/RTSP/GB28181协议视频平台授权页面开发中数字框输入字母BUG解决方法
    国标GB28181流媒体协议EasyGBS视频平台集成第三方平台播放器,显示logo水印如何去除?
    通过私有化部署自建视频流媒体服务器,不同视频流延时说明
  • 原文地址:https://www.cnblogs.com/hi3254014978/p/13645875.html
Copyright © 2011-2022 走看看