# def wrapper(f):# def inner(*args,**kwargs):# print('在被装饰的函数执行之前做的事')# res = f(*args,**kwargs)# print('在被装饰的函数执行之后做的事')# return res# return inner# @wrapper # holiday = wrapper(holiday) 这时holiday == inner# def holiday(day):# print('全体放假%s天'%day)# ret…
一. 反射 ''' # isinstance class A:pass class B(A):pass a = A() print(isinstance(a,A)) # 判断对象和类的关系 print(issubclass(B,A)) # 判断子类和父类的关系 print(issubclass(A,B)) ''' #--------------------------------------------------------------------------------# # # 反射:是用…
一. 类和对象命名空间类里 可以定义两种属性: 1. 静态属性 2. 动态属性 class Course: language = 'Chinese' def __init__(self, teacher, course_name, period, price): self.teacher = teacher # 授课老师 self.name = course_name # 课程名字 self.period = period # 课程周期 self.price = price # 课程价格 def…
一. collections模块 在内置数据类型(dict.list.set.tuple)的基础上,collections模块还提供了几个额外的数据类型:namedtuple.deque.Counter.OrderedDict和defaultdict等. 1.namedtuple: 生成可以使用名字来访问元素内容的tuple 2.deque: 双端队列,可以快速的从另外一侧追加和推出对象 3.Counter: 计数器,主要用来计数 4.OrderedDict: 有序字典 5.defaultdic…
一. 递归函数 如果一个函数在内部调用自身本身,这个函数就是递归函数. 最大递归深度默认是997 -- python从内存角度出发做得限制(而不是程序真的报错),最大深度可以修改 def func(n): print(n) func(n+1) func(1) 查看最大递归深度 ‘’‘ 改变最大递归深度,根据自身电脑配置,深度各不相同 ’‘’ import sys sys.setrecursionlimit(1000000) 修改最大递归深度 举个例子: 现在你们问我,alex老师多大了?我说我不…
def qqxing(l = []): # 可变数据类型 l.append(1) print(l)qqxing() # [1]qqxing([]) # [1]qqxing() # [1, 1]qqxing() # [1, 1, 1] # 如果默认参数的值是一个可变数据类型,那么每一次调用函数的时候,如果不传值,就公用这个数据类型的资源 def qqxing(l = {}): # 可变数据类型 l['k'] = 'v' print(l)qqxing() # {'k': 'v'}qqxing({})…
基础数据类型汇总 1. str 2. int 3. list 4. bool 5. dict (1) fromkeys Python 字典 fromkeys() 方法用于创建一个新的字典,并以可迭代对象中的元素分别作为字典中的键,且所有键对应同一个值,默认为None. 6. tuple 元组里面如果只有一个元素且不加逗号,则类型和该元素一样 7.set (1) 集合是无序的,不重复的数据集合,它里面的元素是可哈希的(不可变类型),但是集合本身是不可哈希(所以集合做不了字典的键)的.以下是集合最重…
1. Python2与Python3的区别: Python2:源码不标准,混乱,重复代码太多: Python3:统一标准,去除重复代码. 编码方式: python2的默认编码方式为ASCII码:python3的默认编码方式为utf-8(解决方式:在文件的首行输入:# -*- encoding:utf-8 -*-) print函数: Python3中print为一个函数,必须用括号括起来:Python2中print为class input(): Python3中用input,Python2中用ro…
# 迭代器和生成器# 迭代器 # 双下方法:很少直接调用的方法,一般情况下,是通过其他语法触发的# 可迭代的 --> 可迭代协议:含有__iter__的方法( '__iter__' in dir(数据) )# 可迭代的一定可以被for循环# 迭代器协议:含有__iter__.__next__的方法# 迭代器一定可迭代,可迭代的通过调用iter()方法就能得到一个迭代器# 迭代器的特点: # 很方便使用,且只能取所有的数据取一次 # 节省内存空间 # 生成器# 生成器的本质就是迭代器# 生成器的表…
'''数据类型:intbool... 数据结构:dict (python独有的)listtuple (pytho独有的)setstr''' # reverse() 反转l = [1,2,3,4,5]l.reverse()print(l) # reversed() 反转,但它的反转不改变原来的列表且返回一个反序的迭代器l = [1,2,3,4,5]l2 = reversed(l)print(l2) # <list_reverseiterator object at 0x000001DF4CC309…