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