若X~U(0,3),则p(1<x<3)=p(2<x<4)对不对?

len:返回对象的长度

ascii:返回对象的可打印表字符串表现方式

format:格式化显示值

#g的格式化比较特殊,假设p为格式中指定的保留小数位数,先尝试采用科学计数法格式化,得到幂指数exp,如果-4<=exp<p,则采用小数计数法,并保留p-1-exp位小数,否则按小数计数法计数,并按p-1保留小数位数

vars:返回当前作用域内的局部变量和其值组成的字典,或者返回对象的属性列表

isinstance:判断对象是否是类或者类型元组中任意类元素的实例

issubclass:判断类是否是另外一个类或者类型元组中任意类元素的子类

hasattr:检查对象是否含有属性

getattr:获取对象的属性值

setattr:设置对象的属性值

delattr:删除对象的属性

callable:检测对象是否可被调用

globals:返回当前作用域内的全局变量和其值组成的字典

locals:返回当前作用域内的局部变量和其值组成的字典

print:向标准输出对象打印输出

作用:将一系列的值以字符串形式输出到标准输出设备上,默认为终端

sep 两个值之间的分隔符,默认为一个空格
end 输出完毕后在流末尾自动追加一个字符,默认为换行符'\n'

input:读取用户输入值

作用:从标准输入设备上读取一个字符串(末尾的换行符会被删除) 

  返回输入的字符串(仅python3)
'提示字符串' 可以为空

open:使用指定的模式和编码打开文件,返回文件读写对象

# t为文本读写,b为二进制读写
 

compile:将字符串编译为代码或者AST对象,使之能够通过exec语句来执行或者eval进行求值

eval:执行动态表达式求值

exec:执行动态语句块

repr:返回一个对象的字符串表现形式(给解释器)

property:标示属性的装饰器

classmethod:标示方法为类方法的装饰器

staticmethod:标示方法为静态方法的装饰器

# 使用装饰器定义静态方法
 

作用:创建一个匿名函数对象
同 def 类似,但不提供函数名

[] 里的内容可以省略
# 以上函数可以改写为:
  • lambda 只是一个表达式,它用来创建一个函数对象
  • 当lambda表达式调用时,先执行冒号后(:)的表达式,并返回表达式的结果的引用
  • lambda 表达式创建的函数只能包含一条"表达式"
  • lambda 比函数简单,且可以随时创建和销毁,有利于减少程序的偶合度

函数为变量:函数名是变量,它在创建函数的时候绑定一个函数

函数为另一个函数的参数:

函数为另一个函数的返回值:

即另一个函数可以返回一个函数

# 此示例示意函数为作函数的返回值
 

将内嵌函数的语句和这些语句的执行环境打包在一起,得到的对象称为闭包(Closure)

闭包的必须要满足的三个条件:

  1. 内嵌函数必须引用外部函数中的变量
  2. 外部函数返回值必须是内嵌函数
return a+b //内函数中用到了外函数的临时变量

当我们调用 outer(5) 时,返回的并不是求和结果,而是内部 inner() 函数的引用,调用函数 demo() 时,才真正计算求和的结果:
在这个例子中,我们在函数 outer() 中又定义了函数 inner(),并且,内部函数 inner() 可以引用外部函数 outer() 的参数和局部变量,当 outer() 返回函数 inner时,相关参数和变量都保存在返回的函数中,这种称为 “ 闭包(Closure)”的程序结构拥有极大的威力。外部函数发现,自己的临时变量会在将来的内部函数中用到,自己在结束的时候,返回内部函数的同时,会把外函数的临时变量送给内函数绑定在一起。所以外函数已经结束了,调用内函数的时候仍然能够使用外函数的临时变量.

在内部函数中修改外部函数的变量:可以用 nonlocal 关键字声明这个变量, 表示这个变量不是局部变量空间的变量,需要向上一层变量空间找这个变量

nonlocal b //表示这个变量不是局部变量,需要向上一层变量空间找这个变量 b=20 //修改外变量的临时参数 return a+b //内函数中用到了外函数的临时变量

还有一点需要注意:使用闭包的过程中,一旦外函数被调用一次返回了内函数的引用,虽然每次调用内函数,是开启一个函数执行过后消亡,但是闭包变量实际上只有一份,每次开启内函数都在使用同一份闭包变量

nonlocal a //表示这个变量不是局部变量,需要向上一层变量空间找这个变量 a=a+b //修改外变量的临时参数 return a //内函数中用到了外函数的临时变量

!!!返回闭包时牢记一点:返回函数不要引用任何循环变量,或者后续会发生变化的变量。

函数装饰器是指装饰的是一个函数,传入的是一个函数,返回的也是一个函数

假如我们要增强一个函数的功能,但又不希望修改函数的定义,这种在代码运行期间动态增强功能的方式,称之为装饰器(Decorator)。本质上,decorator 就是一个返回函数的高阶函数,而传入参数又是要执行的函数,它在闭包的基础上多进行了几步。

比如,我们现在要在函数调用前后记录时间,然后记录程序的运行时间。我们一般会想到的是在程序前后直接加入计时代码,但是这样往往需要修改函数的定义,所以一般不这样使用。

所以,装饰器就出现了。我们如果要定义一个能记录程序运行时间的装饰器decorator,可以如下定义:

def 装饰器函数名(参数):
 

   与成员方法的区别是没有self参数,并且可以在类不进行实例化的情况下调用
   与成员方法的区别在于所接收的第一个参数不是self(类实例的指针),而是cls (当前类的具体类型)
  将一个类方法转变成一个类属性,只读属性

当函数的参数个数太多,需要简化时,可以使用 functools.partial 创建一个新的函数,这个新的函数可以固定住原函数的部分参数,从而在调用时更简单。这样的新函数叫做 偏函数
例如 int() 函数可以把字符串转换为整数,当仅传入字符串时,int() 函数默认按十进制转换

但int()函数还提供额外的base参数,默认值为10。如果传入base参数,就可以做N进制的转换:

当我们要转换大量的二进制字符串时,每次都传入int(x, base=2)非常麻烦,于是我们可以使用 funtools.partial

满足下列一个条件的函数即为高阶函数:

  1. 函数接受一个或多个函数作为参数传入

map(func, *iterables) 用函数和对可迭代对象中的每一个元素作为参数计算出新的可迭代对象,当最短的一个可迭代对象不再提供数据时,此可迭代对象生成结束

作用:筛选可迭代对象iterable中的数据,返回一个可迭代对象,此可迭代对象将对iterable进行筛选
说明:函数func将对每个元素进行求值,返回False则将此数据丢弃,返回True则保留此数据

  • key 函数是用来提供一个参考值,这个值将作为排序的依据
  • reverse 标志用来设置是否降序排序
# 要想按名字的长度升序排序怎么办?

实际参数(实参)的对应关系与形式参数(形参)的对应关系是按位置来依次对应的

实际参数和形式参数通过位置进行传递的匹配
实参个数必须与形参个数相同

序列传参是指在函数调用过程中,用 * 将序列拆解后按位置传参的方式进行参数传递

作用:收集多合的位置传参
说明:元组形参名通常用: 'args'

关键字传参是指传参时,按着形参的名称给形参赋值
实参和形参按名称进行匹配

说明:实参和形参可以不按位置匹配

是指实参为字典,将字典用 ** 拆解后进行关键字传参

  • 字典的键名和形参名必须一致
  • 字典的键名要在形参中存在

所有的参数都必须用关键字传参或字典关键字传参传递

作用:收集多合的关键字传参

1. 缺省参数必须自右至左依次存在,如果一个参数有缺省参数,则其右侧的所有参数都必须有缺省参数

2. 缺省参数可以有0个或多个,甚至全部都有缺省参数

函数传参方式,在能确定形参能唯一匹配到相应实参的情况下可以任意组合

  • 缺省参数,位置形参,星号元组形参,命名关键字形参和双号星字典形参可以混合使用
  • 传参时先位置传参,后关键字传参
  • 函数参数自左至右的顺序为:位置形参-->星号元组形参-->命名关键字形参-->双星号字典形参

我要回帖

更多关于 随机变量X~U 的文章

 

随机推荐