RemakePython
2小时Python基础语法回忆,参考以下文章:
Python3 教程 | 菜鸟教程
# is 代表引用相同
# = 值相同
# python语法糖 a,b=b,a+b
# 元组初始化只有一个元素 a=(1,)
# 交互模式中 最后被输出的表达式结果被赋值给变量 _,且被当做只读变量
# python中格式化字符串 print("我叫{},今年{}岁".format("小蜜",18))
# list的remove和pop区别
# tuple不允许删除,且元组指向的内存中的内容不可以改变
# id查看内存地址
# python中list即vector dict即hashMap tuple即不可变list set即hashset
# python中set的删除s.pop()为随机删除一个元素
# 元组推导式 a = (x for x in range(1,10))的a返回的是一个生成器,使用 tuple(a)才能将生成器对象转成元组"""
生成器例子
"""def countdown(n):while n > 0:yield nn -= 1# 创建生成器对象
generator = countdown(5)# 通过迭代生成器获取值
print(next(generator)) # 输出: 5
print(next(generator)) # 输出: 4
print(next(generator)) # 输出: 3# 使用 for 循环迭代生成器
for value in generator:print(value) # 输出: 2 1"""
迭代器例子 list=[1,2,3,4] it=iter(list) next(it)
"""class A:def __iter__(self):self.a = 1return selfdef __next__(self):if self.a<=20:x = self.aself.a += 1return xelse:raise StopIteration
myclass=A()
myiter=iter(myclass)
print(next(myiter))
for x in iter(myclass):print(x,end=" ")# python函数中的参数传递方式类似于java? 不可变类型先拷贝一个,可变类型直接传引用地址,对于变量声明同理
# python中传递不定长参数时使用加*的形参,会被收集到一个元组,**的形参,会被收集到一个字典"""
不定长参数一个*作为tuple 两个**作为dict
"""
def printinfo(arg1, *tuple,**dict):"打印任何传入的参数"print("输出: ")for var in tuple:print(var,end=" ")print()for key in dict:print("{}:{}".format(key,dict[key]),end=" ")returnprintinfo(70, 60, 50,name="小明",age=18)"""
python装饰器 可以传参也可以不传参,传参深度再加一层,即再多一层闭包
"""
import time
def timer(x):def decorator(func):def wrapper(*args, **kwargs):start_time = time.time() # 记录函数开始时间time.sleep(x) #睡x秒result = func(*args, **kwargs) # 执行函数并获取返回值end_time = time.time() # 记录函数结束时间print('函数 {} 的执行时间为:{:.4f} 秒'.format(func.__name__, end_time - start_time))return resultreturn wrapperreturn decorator
@timer(3)
def sum(arg1,arg2):print("加法:",arg1+arg2)
sum(1,2)"""
python数据结构:stack:list模拟
queue:list模拟
HashSet:set
HashMap:map"""# zip()组合序列 reversed()反转序列 sorted()排序序列 ,需要再转化为对应集合类型"""
删除指定路径下的所有文件
"""
import osdef remove_files(path):for file_name in os.listdir(path):file_path = os.path.join(path, file_name)if os.path.isfile(file_path):os.remove(file_path)print("已删除文件 ", file_path)elif os.path.isdir(file_path):remove_files(file_path) # 递归删除子文件夹中的文件
remove_files("C:/example_folder") # 要删除文件的路径"""
exception处理
"""
try:print("123")
except AssertionError as error:print(error)
except IOError:raise Exception("IOException")
else:try:with open('file.log') as file:read_data = file.read()except FileNotFoundError as fnf_error:print(fnf_error)
finally:print('这句话,无论异常是否发生都会执行。')"""
自定义异常
"""
class MyError(Exception):def __init__(self, value):self.value = valuedef __str__(self):return repr(self.value)"""
Python中的类,有私有属性和私有方法,外面无法访问,且类支持多继承
"""class people:# 定义基本属性name = ''age = 0# 定义私有属性,私有属性在类外部无法直接进行访问__weight = 0# 定义构造方法def __init__(self, n, a, w):self.name = nself.age = aself.__weight = wdef speak(self):print("%s 说: 我 %d 岁。" % (self.name, self.age))# 单继承示例
class student(people):grade = ''def __init__(self, n, a, w, g):# 调用父类的构函people.__init__(self, n, a, w)self.grade = g# 覆写父类的方法def speak(self):print("%s 说: 我 %d 岁了,我在读 %d 年级" % (self.name, self.age, self.grade))def study(self):print("%s 正在学习" % (self.name))# 另一个类,多继承之前的准备
class speaker():topic = ''name = ''def __init__(self, n, t):self.name = nself.topic = tdef speak(self):print("我叫 %s,我是一个演说家,我演讲的主题是 %s" % (self.name, self.topic))# 多继承
class sample(speaker, student):a = ''def __init__(self, n, a, w, g, t):student.__init__(self, n, a, w, g)speaker.__init__(self, n, t)test = sample("Tim", 25, 80, 4, "Python")
test.speak() # 方法名同,默认调用的是在括号中参数位置排前父类的方法
test.study()"""
Python运算符重载
"""
class Vector:def __init__(self,a,b):self.a=aself.b=bdef __str__(self):return f"Vector{self.a},{self.b}"def __add__(self,other):return Vector(self.a+other.a,self.b+other.b)
v1 = Vector(2,10)
v2 = Vector(5,-2)
print (v1 + v2)"""
Python中内部作用域想要修改外部作用域的不可变变量(tuple,string,int等) 时需要使用global关键字
也许你会想为什么int也是不可变变量呢?a=1之后再a=2不是可行吗,这是因为a=2实际上是让a重新指向一个新地址,并没有修改1的值
"""
num = 1
def fun1():global num # 需要使用 global 关键字声明num = 123print(num)
fun1()
print(num)python的map函数 function->iterable
numbers = [1, 3, 6]
newNumbers = tuple(map(lambda x: x , numbers))
newNumbers==(1,3,6)