作用:将一系列的值以字符串形式输出到标准输出设备上,默认为终端
sep 两个值之间的分隔符,默认为一个空格
end 输出完毕后在流末尾自动追加一个字符,默认为换行符'\n'
作用:从标准输入设备上读取一个字符串(末尾的换行符会被删除)
返回输入的字符串(仅python3)
'提示字符串' 可以为空
# t为文本读写,b为二进制读写
compile:将字符串编译为代码或者AST对象,使之能够通过exec语句来执行或者eval进行求值
eval:执行动态表达式求值
exec:执行动态语句块
repr:返回一个对象的字符串表现形式(给解释器)
# 使用装饰器定义静态方法
作用:创建一个匿名函数对象
同 def 类似,但不提供函数名
函数为变量:函数名是变量,它在创建函数的时候绑定一个函数
函数为另一个函数的参数:
函数为另一个函数的返回值:
即另一个函数可以返回一个函数
# 此示例示意函数为作函数的返回值
将内嵌函数的语句和这些语句的执行环境打包在一起,得到的对象称为闭包(Closure)
闭包的必须要满足的三个条件:
当我们调用 outer(5) 时,返回的并不是求和结果,而是内部 inner() 函数的引用,调用函数 demo() 时,才真正计算求和的结果:
在这个例子中,我们在函数 outer() 中又定义了函数 inner(),并且,内部函数 inner() 可以引用外部函数 outer() 的参数和局部变量,当 outer() 返回函数 inner时,相关参数和变量都保存在返回的函数中,这种称为
“ 闭包(Closure)”的程序结构拥有极大的威力。外部函数发现,自己的临时变量会在将来的内部函数中用到,自己在结束的时候,返回内部函数的同时,会把外函数的临时变量送给内函数绑定在一起。所以外函数已经结束了,调用内函数的时候仍然能够使用外函数的临时变量.
在内部函数中修改外部函数的变量:可以用 nonlocal 关键字声明这个变量, 表示这个变量不是局部变量空间的变量,需要向上一层变量空间找这个变量
还有一点需要注意:使用闭包的过程中,一旦外函数被调用一次返回了内函数的引用,虽然每次调用内函数,是开启一个函数执行过后消亡,但是闭包变量实际上只有一份,每次开启内函数都在使用同一份闭包变量
!!!返回闭包时牢记一点:返回函数不要引用任何循环变量,或者后续会发生变化的变量。
函数装饰器是指装饰的是一个函数,传入的是一个函数,返回的也是一个函数
假如我们要增强一个函数的功能,但又不希望修改函数的定义,这种在代码运行期间动态增强功能的方式,称之为装饰器(Decorator)。本质上,decorator 就是一个返回函数的高阶函数,而传入参数又是要执行的函数,它在闭包的基础上多进行了几步。
比如,我们现在要在函数调用前后记录时间,然后记录程序的运行时间。我们一般会想到的是在程序前后直接加入计时代码,但是这样往往需要修改函数的定义,所以一般不这样使用。
所以,装饰器就出现了。我们如果要定义一个能记录程序运行时间的装饰器decorator,可以如下定义:
def 装饰器函数名(参数):
与成员方法的区别是没有self参数,并且可以在类不进行实例化的情况下调用
与成员方法的区别在于所接收的第一个参数不是self(类实例的指针),而是cls (当前类的具体类型)
将一个类方法转变成一个类属性,只读属性
当函数的参数个数太多,需要简化时,可以使用 functools.partial 创建一个新的函数,这个新的函数可以固定住原函数的部分参数,从而在调用时更简单。这样的新函数叫做 偏函数
例如 int() 函数可以把字符串转换为整数,当仅传入字符串时,int() 函数默认按十进制转换
但int()函数还提供额外的base参数,默认值为10。如果传入base参数,就可以做N进制的转换:
当我们要转换大量的二进制字符串时,每次都传入int(x, base=2)非常麻烦,于是我们可以使用 funtools.partial
满足下列一个条件的函数即为高阶函数:
map(func, *iterables) 用函数和对可迭代对象中的每一个元素作为参数计算出新的可迭代对象,当最短的一个可迭代对象不再提供数据时,此可迭代对象生成结束
作用:筛选可迭代对象iterable中的数据,返回一个可迭代对象,此可迭代对象将对iterable进行筛选
说明:函数func将对每个元素进行求值,返回False则将此数据丢弃,返回True则保留此数据
实际参数(实参)的对应关系与形式参数(形参)的对应关系是按位置来依次对应的
实际参数和形式参数通过位置进行传递的匹配
实参个数必须与形参个数相同
序列传参是指在函数调用过程中,用 * 将序列拆解后按位置传参的方式进行参数传递
作用:收集多合的位置传参
说明:元组形参名通常用: 'args'
关键字传参是指传参时,按着形参的名称给形参赋值
实参和形参按名称进行匹配
说明:实参和形参可以不按位置匹配
是指实参为字典,将字典用 ** 拆解后进行关键字传参
所有的参数都必须用关键字传参或字典关键字传参传递
作用:收集多合的关键字传参
1. 缺省参数必须自右至左依次存在,如果一个参数有缺省参数,则其右侧的所有参数都必须有缺省参数
2. 缺省参数可以有0个或多个,甚至全部都有缺省参数
函数传参方式,在能确定形参能唯一匹配到相应实参的情况下可以任意组合