目录
- type()方法和isinstance()方法
- lambda是什么
- 实现python上下文
- python里的常见异常
- __iter__和__next__是什么
- python的左移右移算法
- with open的原理
- iter()函数 与next()函数
type()方法和isinstance()方法
type():函数用于返回一个对象的类型,它可以返回对象所属类的类型信息。
isinstance():函数用于检查一个对象是否指定类型或其子类的实例,它返回一个布尔值,如何对象是指定类型或者其子类的实例则返回Ttue、否则返回False
区别:
1.type()函数返回对象的具体类型,而isinstance()函数则检查对象是否是指定类型或其子类的实例。
2.type()返回的是对象的类型,是一个类对象的实例、而isinstance()返回的是一个布尔值,表示对象是否是指定类型或其子类的实例。
3.type()函数通常用于判断对象的具体类型,例如判断一个对象是否是整数、字符串、列表等。isinstance()函数通常用于检查对象是否是某个类的实例、可以检查对象是否是某个类的子类的实例
lambda是什么
lambda表示匿名函数,匿名函数有个限制、就是只能有一个表达式,不用写retuen,返回值就是该表达式的结果。
匿名函数的好处是:因为匿名函数没有名字,不必担心函数名冲突。此外,匿名函数也是一个函数对象,也可以把匿名函数赋值给一个变量,再利用变量来调用该函数。
>>> f = lambda x: x * x
>>> f
<function <lambda> at 0x101c6ef28>
>>> f(5)
25
同样也可以把匿名函数作为返回值返回,例如:
def build(x, y):
return lambda: x * x + y * y
实现python上下文
这是一个可以实现python上下文的原生代码,里面的enter() 方法在语句体执行之前进入运行时上下文,exit() 在语句体执行完后从运行时上下文退出,使用这种方法,可以更方便管理代码,例如开启上下文,还需要手动关闭挺麻烦,使用这种方法就可以自动关闭
with是语句,open是类,所以类可以自己定义,open也可以更改
class Y:
def __init__(self, name):
self.name = name
print(self.name)
def __enter__(self):
self.file = open(self.name, 'w')
print('self.file=', self.file)
return self.file
def __exit__(self, exc_type, exc_val, exc_tb):
if self.file:
self.file.close()
with Y('301.txt') as f:
f.write('hello、world!')
f.write('bye now')
python里的常见异常
1.ValueError(数值错误):当一个函数接受到一个不合适的参数或参数值时,会引发ValueError异常,例如:尝试将一个字符串转换成为整数时,如果字符串无法解析为整数,就会引发ValueError
2.TypeError(类型错误):当操作或函数应用不兼容的类型时,会引发TypeError异常,例如:尝试对字符串进行数字运算,或将一个不可迭代的对象传递给一个期望可迭代对象的函数,都会引发TypeError
3.IndexError(索引错误):当使用无效的索引访问序列(如列表、字符串等)中的元素时,会引发IndexError异常。例如,尝试访问一个超出席列范围的索引或负数索引,都会引发IndexError。]
4.KeyError(键错误): 当使用一个字典中不存在的键访问字典元素时,会引发KeyError异常.
5.FileNotFoundError (文件未找到错误) : 当尝试打开一个不存在的文件时,会引发FileNotFoundError异常。
6.I0Error (输入/输出错误) : 当发生输入/输出操作失败时,会引发IOError异常。例如,在读取或写入文件时发生错误,就会引发IOError。
7.ZeroDivisionError (除委错误) : 当尝试以委作为除数进行除法运算时,会引发ZeroDivisionError异常。
__iter__
和__next__
是什么
__iter__
和__next__
是Python中迭代器的两个特殊方法。
__iter__
方法是一个无参数方法,用来返回一个迭代器对象。迭代器对象可以通过在循环中使用for
语句来遍历元素。通常,在__iter__
方法中,你需要返回自身对象,因为迭代器对象本身就是可迭代的。
__next__
方法是用来取得迭代器的下一个元素。在每次迭代中,它被调用一次。如果没有更多的元素可以返回,它应当抛出StopIteration
异常,以通知循环结束。
python的左移右移算法
左移操作将一个数的二进制表示向左移动指定的位数。移动后,低位补0。例如,对于整数x
进行左移操作x << n
,表示将x
的二进制表示向左移动n
位。每个位向左移动一位,相当于将该数乘以2的n
次方。
右移操作将一个数的二进制表示向右移动指定的位数。移动后,高位补0。对于正数,右移操作是逻辑右移,等于将数除以2的n
次方并向下取整。而对于负数,右移操作是算术右移,即将数除以2的n
次方并向下取整。
with open的原理
当使用with open打开一个文件时,Python会在进入 with语句块之前调用文件对象的__enter__()方法,然后将文件对象赋值给指定的变量。这个过程称为上下文管理器的进入阶段,
在with语句块中,可以执行对文件的各种操作,读取写入或处理数据。这些操作需要在文件操作完后及时关闭,以释放系统资源,使用with open打开文化时,我们不必关心关闭文件的细节。
当离开文件对象的__exit__()方法,不论代码是否发生异常,Python都会调用文件对象的__exit__()方法,这个方法有三个参数,分别是异常类型、异常值和追溯信息,可以执行一些清理操作。
好处是确保代码块内部的文件操作完成后无论是否发生异常,文件都会被正常关闭,提供了更安全、更简洁的文件操作方式。
iter()函数 与next()函数
iter()
在Python中,iter()是一个内置函数,用于创建一个迭代器。它接受一个可迭代对象作为参数,并返回一个迭代器对象。
迭代器(iterator)是一种为可迭代对象(iterable)提供迭代访问的方式。可迭代对象是指具有__iter__()方法的对象,例如字符串、列表、元组、字典等。创建迭代器可以通过调用iter()函数来实现。
next()
在Python中,iter()是一个内置函数,用于创建一个迭代器。它接受一个可迭代对象作为参数,并返回一个迭代器对象。
迭代器(iterator)是一种为可迭代对象(iterable)提供迭代访问的方式。可迭代对象是指具有__iter__()方法的对象,例如字符串、列表、元组、字典等。创建迭代器可以通过调用iter()函数来实现。