大家好,为大家带来python中核心知识的讲解,不讲最基础的语法,这个大家都能轻松学会,不耽误时间,只有干货。
查看当前作用域内的所有变量
注:help函数用来查看帮助或运行时信息自动化内存管理和引用计数
每个对象会记录有几个变量引用自身,当引用的数量为0时此对象被销毁,此种自动化内存管理的方式叫引用计数。
is的作用:判断两个对象是否是同一个对象(比较内存中的地址),当是同一个对象返回True,否则返回False, is not 的作用与 is相反
CPython 中 整数 -5 至 256永远存在于小整数对象池中,不会释放并可重复使用
作用:返回一个对象在内存中的地址
bool(x)用于显示获取x的布尔值
列表推导式是用可迭代对象创建列表的表达式
- 作用:用简易方法生成列表
-
# 生成一个数值为1~9的平方的列表
-
#将列表[10, 20, 30] 中的元素与列表[1,2,3]元素分别相加,将得到的元素放于一个列表中
-
2. 已知有一个字符串: 将其转化为列表,列表的内部是整数
是用可迭代对象生成字典的表达式
-
{键表达式 : 值表达式 for 变量 in 可迭代对象[if 真值表达式]} 注: []表示其中的内容可省略
-
# 生成一个字典,键为数字 1 ~ 9,值为键的平方
-
作用:返回一个可迭代对象,此可迭代对象用函数func对可迭代对象iterable中的每一个元素作为参数计算后得新的数据
-
# 此示例示意map函数的使用
-
-
筛选可迭代对象iterable 中的数据,返回一个可迭代对象,此可迭代对象只返回iterable中符合条件的数据
-
function将对iterbale中提供的每个数据进行求布尔值,如果为True则保留,否则为False 丢弃数据
-
-
# 将1-20的偶数用filter生成可迭代对象后,将可迭代对象生成的数据存于列表中
- 用filter 函数将1-100之间的所有素数存在列表中
- 将原可迭代对象的数据进行排序,生成排序后的列表
- 【key函数】是用来提供一个值,这个值将作为排序的依据,如果不给出key函数,则用
原数据的值进行比较和排序
reverse 标志用来设置是否降序排序 -
排序的依据为字符串的反序
装饰器是一个函数,主要作用是用来包装另一个函数或类
包装的目的是在不改变原函数(或类名)的情况下改变被包装对象的行为
是指装饰器是一个函数,传入的是一个函数,返回的是一个函数
-
def 装饰器函数名(参数):
- 被装饰器函数的变量(函数名)绑定装饰器函数调用后的返回的函数
-
# 此示例示意装饰器函数的定义和调用装饰器原理 # 上述 mydeco的原理是在 def myfun语句调用之后加了一条如下语句
-
# 此示例示意装饰器函数用来包装被装束函数 fn() # 被调用被装饰函数 # 上述 mydeco的原理是在 def myfun语句调用之后加了一条如下语句
-
# 此示例示意装饰器的应用场合及功能 print('正在进行权限验证。。。')
函数内第一次未赋值给任何变量的字符串是此函数的文档字符串
-
'''函数文档字符串'''
- 1. 文档字符串通常用来说明函数功能和使用方法
2. 在交互模式下,输入:
3. 函数的文档字符串绑定在函数的__doc__属性上
__doc__属性用于记录文档字符串
__name__属性用于记录函数名
-
迭代器是访问可迭代对象的工具
-
迭代器是指用iter(obj)函数返回的对象(实例)
-
迭代器可以用next(it)函数获取可迭代对象的数据
从可迭代对象中返回一个迭代器,iterable 必须是能提供一个迭代器的对象 从迭代器iterable中获取下一个记录,如果无法获取下一条记录,则触发StopIteration 异常 1. 迭代器只能往前取值,不会后退 2. 用iter 函数可以返回一个可迭代对象的迭代器
用迭代器可以依次访问可迭代对象的数据
# 以下用迭代器来访问 用for语句来遍历所有元素如下 将for语句改写为while语句和迭代器实现生成器是能够动态提供数据的对象,生成器对象也是可迭代对象(实例)
含有yield语句的函数是生成器函数,此函数被调用将返回一个生成器对象
yield 翻译为(产生或生成)
# 生成器函数只有在next(it) 函数调用时才会执行,且遇到yield后返回相应的值给next(it)函数
# 用生成器函数来生成一些列的整数, 0 - n
生成器表达式和列表推导式的区别
# 以下是生成器表达式 # 生成器表达式是现用现生成,列表推导式一次性生成静态数据
生成器函数的调用将返回一个生成器对象,生成器对象是一个可迭代对象,通常用来动态生成数据
生成器函数调用return 语句会触发一个StopIteration 异常
练习
写一个生成器函数,myeven(start, stop)用来生成start开始带stop结束(不包含)的偶数
(表达式 for 变量 in 可迭代对象 [if 真值表达式]) 用推导式形式创建一个新的生成器
1) 写一个生成器函数,让此函数能够动态提供数据,数据为原列表数字的平方加1 2) 写一个生成器表达式,让此表达式能够动态提供数据,数据为原列表数字的平方加1 3) 生成一个列表,此列表内的数据是原列表数据的平方加1
作用是生成一个个性化的可迭代对象
返回一个zip对象,此对象用于生成元组,此元组的每个数据来源于参数中的可迭代对象,当最小的可迭代对象不再提供数据时迭代结束
# 既能得到索引又能得到值
写一个程序,读入任意行文字,当输入空行时结束,打印带有行号的输入的结果
迭代器协议是指对象能够使用next()函数获取下一项数据,在没有下一项数据时触发一个StopIteration异常来终止迭代的约定
注: 此方法需要实现迭代器协议
# 此示例示意将自定义的类MyList创建的对象制作为可迭代对象
'''这是一个自定义的列表类型,此类型的对象用data属性绑定的列表来存储数据'''
'''此方法用来返回一个能访问self对象'''
'''此方法用来返回一个能访问self对象迭代器'''
'''此类用来描述能够访问MyList类型的对象的迭代器'''
'''此方法用来实现迭代器协议'''
浅拷贝是指在复制过程中,只复制一层变量,不会复制深层变量绑定的对象的复制过程
复制对象及对象关联的对象一起复制过程叫深拷贝
-
S.split(sep=None) 将字符串,使用 sep作用分隔符分割S字符串,返回分割后的字符串列表,当不给定参数时,用空白字符作为分隔符分割
-
S.join(iterable) 用可迭代对象中的字符串,返回一个中间用S进行分隔的字符串
返回所有属性的字符串列表
with 语句深层次讲解
使用于对资源进行访问的场合,确保使用过程中不管是否发生异常都会执行必须"清理"的操作,并释放资源 文件打开后自动关闭,线程中锁的自动获取和释放等 as 字句中的变量用于绑定表达式执行后生成的对象 with 语句并不会改变异常的状态
2. 能够使用with语句进行管理的对象必须是环境管理器 3. __enter__ 方法将在进入with语句时被调用,由as变量绑定返回的对象 4. __exit__ 方法将在离开with语句时被自动调用,且可以通过参数来判断离开with语句时是否有异常发生
'''此类对象可以用于with语句进行管理''' exc_val
用来绑定错误对象,当内有发生异常时绑定None print('您已离开with语句, 离开时没有发生任何异常')