参考:https://blog.csdn.net/xyhlfwyhzy/article/details/88225731
类和对象
# 使用class关键字创建一个最简单的类
class Student:
stuCount = 0 # 类变量 值会被所有实例共享
def __init__(self, name, salary): # 初始化函数/构造函数
#self 代表类的实例,在定义类的方法时必须有,虽然在调用时不必传入相应的参数
self.name = name
self.age= age
Student.stuCount += 1
def printInfo(self): # 类方法
print("Student Name:{}, Age:{}".format(self.name, self.age))
# 实例化对象
stu = Student('Zyn', 20)
stu.printInfo() # =>Student Name:Zyn, Age:1
# 对象可以直接添加,删除,修改属性
stu.major = 'CS'
stu.age = 10
del stu.age
内置属性类
__dict__ # 类的属性(包含一个字典,由类的数据属性组成)
__doc__ # 类的文档字符串
__name__ # 类名
__module__# 类定义所在的模块
__bases__ # 类的所有父类构成元素(包含了一个由所有父类组成的元组)
继承
# 直接用了菜鸟的示例
class Parent: # 定义父类
parentAttr = 100
def __init__(self):
print("调用父类构造函数")
def parentMethod(self):
print ('调用父类方法')
def setAttr(self, attr):
Parent.parentAttr = attr
def getAttr(self):
print( "父类属性 :", Parent.parentAttr)
class Child(Parent): # 定义子类
def __init__(self):
print ("调用子类构造方法")
def childMethod(self):
print( '调用子类方法')
c = Child() # 实例化子类
c.childMethod() # 调用子类的方法
c.parentMethod() # 调用父类方法
c.setAttr(200) # 再次调用父类的方法 - 设置属性值
c.getAttr() # 再次调用父类的方法 - 获取属性值
重写和重载
重写:子类继承父类后需要同名的不同功能的函数,即可重写同名方法
重载:函数或者方法有相同的名称,但是参数列表不相同(类型不同,数量不同,位置不同)。但是在Python的呈现使用中不存在重载的概念(*arg和**kwargs的存在)。
class Parent: # 定义父类
def myMethod(self):
print '调用父类方法'
class Child(Parent): # 定义子类
def myMethod(self):
print '调用子类方法'
c = Child() # 子类实例
c.myMethod() # 子类调用重写方法
类的属性和方法
class Student(object):
Bighome = '地球' #类属性,相当于JAVA的静态属性,由实例共享
def __init__(self, name):
self.name = name #实例属性1,JAVA的动态属性,实例独有
self._sex = sex # 单下划线、保护
self.__number = number # 双下划线,提示是私有变量
s = Student('Bob')
s.score = 90 #实例属性2,Python可以动态绑定
print(s.Bighome) # 地球
print(Student.Bighome) # 地球
# 实例属性 可以屏蔽 类属性
s.Bighome = '火星'
print(s.Bighome) # 火星
print(Student.Bighome) # 地球
正则表达式
Python中通过调用re这个模块实现正则表达功能。
一个练习正则的网站RegexGolf
网上大神给出的参考答案
re模块
# 从字符串的起始位置匹配一个模式,如果不是起始位置匹配成功的话就返回none
re.match(pattern, string, flags=0)
# pattern:匹配的正则表达式 string:要匹配的字符串
# flags:标志位,用于控制正则表达式的匹配方式,如:是否区分大小写,多行匹配等等
# 扫描整个字符串并返回第一个成功的匹配。
re.search(pattern, string, flags=0)
# 检索和替换
re.sub(pattern, repl, string, count=0, flags=0)
# 在字符串中找到正则表达式所匹配的所有子串,并返回一个列表
findall(string[, pos[, endpos]])
# 按照能够匹配的子串将字符串分割后返回列表
re.split(pattern, string[, maxsplit=0, flags=0])
datetime模块学习
https://www.liaoxuefeng.com/wiki/1016959663602400/1017648783851616
http请求
import requests
# 发送get请求
url = 'https://www.csdn.net/'
requests = requests.get(url)
print(requests.content) # 返回字节形式
# 发送post请求
url = 'https://xxxxx.com/login'
postdatas = {'key': 'value'}
requests = requests.post(url, data=postdatas)
print(requests.content) # 返回字节形式
# put、delete、head、optiions请求
r = requests.put('https://www.csdn.net/put', data = {'key':'value'})
r = requests.delete('https://www.csdn.net/delete')
r = requests.head('https://www.csdn.net/get')
r = requests.options('https://www.csdn.net/get')
2、URL参数
URL 的查询字符串(query string)传递某种数据。如果你是手工构建 URL,那么数据会以键/值对的形式置于 URL 中,跟在一个问号的后面。例如,csdn.net/get?key=val。
requests 允许使用 params 关键字参数,以一个字符串字典来提供这些参数。
dic_param= {'key1': 'value1', 'key2': 'value2'}
r = requests.get("https://www.csdn.net/get", params=dic_param)
打印输出该 URL,能看到 URL 已被正确编码:
print(r.url) # =>https://www.csdn.net/get?key1=value1&key2=value2