继承
父类是继承的类,也称为基类;子类是另一个类继承的类,也称为派生类。
# 创建父类和子类 将从Person类继承属性和方法
class Person:
def __init__(self, fname, lname):
self.firstname = fname
self.lastname = lname
def printname(self):
print(self.firstname, self.lastname)
x = Person("Bill", "Gates")
x.printname()
class Student(Person)
# 当添加init函数时 子类将不继承父的init函数 覆盖了父的init函数 如保持父的init函数,需添加父的init函数调用
def __init__(self, fname, lname):
Person.__init__(self, fname, lname)
x = Student("Elon", "Musk")
x.printname()
# super()函数 会使子类从其父继承所有方法和属性迭代器
迭代器是一个对象,该对象包含可计数数字。迭代器是可迭代的对象,意味着可以遍历所有值。
列表、元组、字典和集和都可以迭代对象,即它们是迭代的容器。
# 使用方法包括 __iter__() __next__() 类似初始函数__init__()
# 从元组中返回一个迭代器,并打印每一个项目;也可以字符串返回迭代器,打印每一个字符;同时for循环遍历也可以迭代对象,每个循环执行next()方法
class MyNumbers:
def __iter__(self):
self.a = 1
return self
def __next__(self):
if self.a <=20:
x = self.a
self.a += 1
return x
else:
raise StopIteration # 作为一个终止条件 否则会一直进行
myclass = MyNumbers()
myiter = iter(myclass)
for x in myiter:
print(x)多态
词意为“多种形式”,指在许多对象或类上执行的具有相同名称的方法/函数/操作符。
# len()函数是python函数用于不同对象的例子 包括字符串 元组 字典
class Vehicle:
def __init__(self, brand, model)
self.brand = brand
self.model = model
def move(self):
print("Move!")
class Car(Vehicle):
pass
class Boat(Vehicle):
def move(self):
print("Sail!")
class Plane(Vehicle):
def move(self):
print("Fly!")
car1 = Car("Ford", "Mustang")
boat1 = Boat("Ibiza", "Touring 20")
plane1 = Plane("Boeing", "747")
for x in (car1, boat1, plane1)
print(x.brand)
print(x.model)
x.move()
# 子类从父类继承属性和方法
# Car Boat Plane类是空的 从Vehicle继承了属性和函数作用域
变量仅在创建区域内可用,称为作用域。分 局部作用域和全局作用域,即变量可局部和全局调用。
模块
模块是包含一组函数的文件,希望在应用程序中引用。
# mymodule.py文件下
def greeting(name)
print("Hello, " + name)
person1 = {
"name": "Bill",
"age": 63,
"country": "USA"
}
# 使用import语句使用创建的模块
import mymodule
mymodule.greeting("Bill")
a = mymodule.person1["age"]
print(a)
# 重命名模块
import mymodule as mx
a = mx.person1["age"]
print(a)
# 使用dir()函数:内置函数可以列出所有函数名(或变量名)
import platform
x = dir(platform)
print(x)
# 使用from关键字选择仅从模块导入部件
from mymodule import person1
print(person1["age"])使用 from 关键字导入时,不能在引用模块中的元素时使用模块名称。示例:person1["age"],而不是mymodule.person1["age"]
日期
# 导入datetime模块
import datetime
x = datetime.datetime.now() # 显示当前时间
print(x)
print(x.year) # 年
print(x.strftime("%A")) # 年份
# 创建日期对象 使用datetime模块的datetime()类(构造函数),接受时间地区(小时、分钟、秒、微妙、tzone)的参数,未设置参数默认为 0 时区默认为 None
x = datetime.datetime(2020, 5, 17)
print(x)strftime()函数将日期对象格式化为可读字符串。
import datetime
x = datetime.datetime.now
print(x.strftime("%B"))| 指令 | 描述 | 实例 |
|---|---|---|
| %a | Weekday 短版本 | wed |
| %A | Weekday 长版本 | wednesday |
| %w | Weekday 数字 0-6 0为周日 | 3 |
| %d | 日 数字 0-31 | 31 |
| %b | 月名 短版本 | Dec |
| %B | 月名 完整版 | December |
| %m | 月 数字 01-12 | 12 |
| %y | 年 短版本 无世纪 | 25 |
| %Y | 年 完整版 | 2025 |
| %H | 小时 00-23 | 20 |
| %I | 小时 00-12 | 8 |
| %p | AM/PM | PM |
| %M | 分 00-59 | 33 |
| %S | 秒 00-59 | 45 |
| %f | 微妙 000000-999999 | 234212 |
| %z | UTC 偏移 | +01:00 |
| %Z | 时区 | CST |
| %j | 天数 001-365 | 365 |
| %U | 周数 每周第一天是周日 00-53 | 52 |
| %W | 周数 每周第一天是周一 00-53 | 52 |
| %c | 日期和时间的本地版本 | Mon Dec 31 17:41:00 2025 |
| %x | 日期的本地版本 | 12/31/18 |
| %X | 时间的本地版本 | 17:41:00 |
| %% | A % character | % |
数学
import math
x = pow(4, 3) # 4的3次幂
x = math.ceil(1.4) # 一个数字向上取整 2
x = math.floor(1.4) # 一个数字向下取整 1
x = math.exp(13) # E的13次幂 E = 2.718282RegEx(正则表达式)
形成搜索模式的字符序列,可用于检查字符串是否包含指定的搜索模式。
# 导入re模块
import re
# findall() 返回包含所有匹配项的列表 未找到匹配项返回空列表
str = "Chine is a great country"
x = re.findall("a", str)
print(x)
# search() 搜索字符串中的匹配项 匹配返回Match对象 未匹配返回None
str = "China is a great country"
x = re.search("\s", str)
# 搜索第一个空白字符
print("The first white-space character is located in position:", x.start())
# split() 返回一个列表,其中字符串在每次匹配时被拆分
# 对每个空白字符处进行拆分 maxsplit控制出现次数
str = "China is a great country"
x = re.split("\s", str, 1)
print(x)
# sub() 把匹配替换为您选择的文本 count控制替换次数
# 用数字9替换每个空白字符
str = "China is a great country"
x = re.sub("\s", "9", str, 2)
print(x)Match对象:包含有关搜索和结果信息的对象
# span() 返回的元组包含了匹配的开始和结束位置
# .sring 返回传入函数的字符串
# group() 返回匹配的字符串部分
import re
str = "China is a great country"
# r"\bC\w+: 匹配字母“C“开头的单词 并且确保其是起始字母
# r":前缀 r 表示原始字符串(raw string),它告诉 Python 不对字符串中的反斜杠 \ 进行转义处理,这样可以避免在正则表达式中误解反斜杠的作用。
# \b:表示单词边界(word boundary),这意味着匹配的位置是在一个单词的开始或者结束的位置。在这个例子中,\b 确保了 "C" 是单词的开头,而不是单词的中间。
# \w+:\w 匹配一个字母、数字或下划线(相当于 [a-zA-Z0-9_]),+ 表示匹配一次或多次。因此,\w+ 匹配一个由字母、数字或下划线组成的单词。
x = re.search(r"\bC\w+", str)
print(x.span()) # 查找大写C开头的单词 (0, 5)
print(x.string) # 打印传入字符串 China is a great country
print(x.group()) # 查找大写C开头的任何单词 ChinaPIP
pip是Python包或模块的包管理器。
# PIP常用命令
# 打开anaconda prompt窗口进入anaconda环境文件夹 查看pip版本
pip --version
(base) D:\soft\Anacanda3>pip --version
pip 23.3.1 from D:\soft\Anacanda3\lib\site-packages\pip (python 3.9)
# 下载/删除包
pip install / uninstall 包名
# 列出包
pip list