D15内置函数和魔术方法

Posted wr13640959765

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了D15内置函数和魔术方法相关的知识,希望对你有一定的参考价值。

1.1作用域相关

locals :函数会以字典的类型返回当前位置的全部局部变量。

globals:函数以字典的类型返回全部全局变量。

1.2其他相关

1.2.1 字符串类型代码的执行 eval,exec,complie

  eval:执行字符串类型的代码,并返回最终结果。

  exec:执行字符串类型的代码。

  compile:将字符串类型的代码编译。代码对象能够通过exec语句来执行或者eval()进行求值。(一般不用)

  有返回值的字符串形式的代码用eval,没有返回值的字符串形式的代码用exec,一般不用compile。

1.2.2 输入输出相关 input,print

  input:函数接受一个标准输入数据,返回为 string 类型。

  print:打印输出。

1.2.3内存相关 hash id

  hash:获取一个对象(可哈希对象:int,str,Bool,tuple)的哈希值。

1.2.3文件操作相关

  open:函数用于打开一个文件,创建一个 file 对象,相关的方法才可以调用它进行读写。

1.2.4模块相关__import__ 

  __import__:函数用于动态加载类和函数 。

1.2.5帮助

  help:函数用于查看函数或模块用途的详细说明。

1.2.6调用相关

  callable:函数用于检查一个对象是否是可调用的。如果返回True,object仍然可能调用失败;但如果返回False,调用对象ojbect绝对不会成功。

1.2.7查看内置属性

  dir:函数不带参数时,返回当前范围内的变量、方法和定义的类型列表;带参数时,返回参数的属性、方法列表。如果参数包含方法__dir__(),该方法将被调用。如果参数不包含__dir__(),该方法将最大限度地收集参数信息。

range:函数可创建一个整数对象,一般用在 for 循环中。

1.3 迭代器生成器相关

range:函数可创建一个整数对象,一般用在 for 循环中。

next:内部实际使用了__next__方法,返回迭代器的下一个项目。

iter:函数用来生成迭代器(讲一个可迭代对象,生成迭代器)。

1.4 基础数据类型相关

1.4.1数字相关(14)

  

bool :用于将给定参数转换为布尔类型,如果没有参数,返回 False。

int:函数用于将一个字符串或数字转换为整型。

float:函数用于将整数和字符串转换成浮点数。

complex:函数用于创建一个值为 real + imag * j 的复数或者转化一个字符串或数为复数。如果第一个参数为字符串,则不需要指定第二个参数。

进制转换(3):

    bin:将十进制转换成二进制并返回。

    oct:将十进制转化成八进制字符串并返回。

    hex:将十进制转化成十六进制字符串并返回。

数学运算(7):

    abs:函数返回数字的绝对值。

    divmod:计算除数与被除数的结果,返回一个包含商和余数的元组(a // b, a % b)。

    round:保留浮点数的小数位数,默认保留整数。

    pow:求x**y次幂。(三个参数为x**y的结果对z取余)

 sum:对可迭代对象进行求和计算(可设置初始值)。

    min:返回可迭代对象的最小值(可加key,key为函数名,通过函数的规则,返回最小值)。

    max:返回可迭代对象的最大值(可加key,key为函数名,通过函数的规则,返回最大值)。

1.4.2和数据结构相关(24)

  列表和元祖(2)

    list:将一个可迭代对象转化成列表(如果是字典,默认将key作为列表的元素)。

    tuple:将一个可迭代对象转化成元祖(如果是字典,默认将key作为元祖的元素)。

  相关内置函数(2)

    reversed:将一个序列翻转,并返回此翻转序列的迭代器。

    slice:构造一个切片对象,用于列表的切片。

字符串相关(9)

    str:将数据转化成字符串。

    format:与具体数据相关,用于计算各种小数,精算等。

    bytes:用于不同编码之间的转化。

    ord:输入字符找该字符编码的位置

    chr:输入位置数字找出其对应的字符

    ascii:是ascii码中的返回该值,不是就返回/u...

    repr:返回一个对象的string形式(原形毕露)。

数据集合(3)

    dict:创建一个字典。

    set:创建一个集合。

    frozenset:返回一个冻结的集合,冻结后集合不能再添加或删除任何元素。

  相关内置函数(8)

     len:返回一个对象中元素的个数。

    sorted:对所有可迭代的对象进行排序操作。

    enumerate:枚举,返回一个枚举对象。

    all:可迭代对象中,全都是True才是True

    any:可迭代对象中,有一个True 就是True

    zip:函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表。如果各个迭代器的元素个数不一致,

      则返回列表长度与最短的对象相同。

    filter:过滤·。

    map:会根据提供的函数对指定序列做映射。

匿名函数

匿名函数:为了解决那些功能很简单的需求而设计的一句话函数。

技术分享图片

上面是我们对calc这个匿名函数的分析,下面给出了一个关于匿名函数格式的说明

函数名 = lambda 参数 :返回值

#参数可以有多个,用逗号隔开
#匿名函数不管逻辑多复杂,只能写一行,且逻辑执行结束后的内容就是返回值
#返回值和正常的函数一样可以是任意数据类型

我们可以看出,匿名函数并不是真的不能有名字。

匿名函数的调用和正常的调用也没有什么分别。 就是 函数名(参数) 就可以了

python 的几个内置函数(lambda ,zip, filter, map, reduce )用法

1.lambda lambda其实就是一条语句,lambda(x):body。x是lambda函数的参数,参数可以有任意多个(包括可选参数);body是函数体,只能是一个表达式,并且直接返回该表达式的值。
>>>f=lambda x:x+1
>>>f(2)
3

2.filter filter(func, list)接受两个参数:一个函数func和一个列表list,返回一个列表。函数func只能有一个参数。filter的功能:列表中所有元素作为参数传递给函数,返回可以另func返回真的元素的列表
>>>l=[‘abc‘,‘acd‘,‘1245‘,‘ddad‘,‘aaa‘]
>>>func(s)
... return s.startswith(‘a‘)
>>>filter(func, l)
[‘abc‘,‘acd‘,‘aaa‘]

 filter为过滤list,并返回list,绑定的函数为一个返回bool值的函数 
 filter(lambda item:item>2,[1,2,3,4])
 >>>[3,4]

3.zip  zip函数接受任意多个序列作为参数,将所有序列按相同的索引组合成一个元素是各个序列合并成的tuple的新序列,新的序列的长度以参数中最短的序列为准。另外(*)操作符与zip函数配合可以实现与zip相反的功能,即将合并的序列拆成多个tuple
>>>x=[1,2,3],y=[‘a‘,‘b‘,‘c‘]
>>>zip(x,y)
[(1,‘a‘),(2,‘b‘),(3,‘c‘)]
>>>zip(*zip(x,y))
[(1,2,3),(‘a‘,‘b‘,‘c‘)]

4.map为操作list,返回list,绑定的函数为修改list中每一个值的函数
     >>> list=[1,2,3]
     >>> map(lambda x : x*2,list)
     >>> [2, 4, 6]
  
     5.reduce为逐次操作list里的每项,接收的参数为 2个,最后返回的为一个结果
     >>>  def myadd(x,y):   
     >>>               return x+y
     >>>   sum=reduce(myadd,(1,2,3))  
     >>> 6

























以上是关于D15内置函数和魔术方法的主要内容,如果未能解决你的问题,请参考以下文章

我们如何强制 getattribute() 为魔术方法(特殊方法)调用?

魔术引号addslashes和mysql_real_escape_string的防御以及绕过

PHP链式操作通过call和callstatic魔术方法的实现,以及phpstorm通过注释去追踪function

PHP链式操作通过call和callstatic魔术方法的实现,以及phpstorm通过注释去追踪function

面向对象魔术常量

魔术方法