内置函数和匿名函数
Posted 鱼丸粗面没鱼丸
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了内置函数和匿名函数相关的知识,希望对你有一定的参考价值。
一、内置函数
python3一共68个内置函数,分类如下如图
1.1作用域相关内置函数
globals()——获取全局变量的字典
locals()——获取执行本方法所在命名空间内的局部变量的字典
1.2其他内置函数
1.2.1 输入输出相关
input:
sql=input("sql(%s):>>".strip()%(user_status[\'username\']))
def print(self, *args, sep=\' \', end=\'\\n\', file=None): # known special case of print """ print(value, ..., sep=\' \', end=\'\\n\', file=sys.stdout, flush=False) file: 默认是输出到屏幕,如果设置为文件句柄,输出到文件 sep: 打印多个值之间的分隔符,默认为空格 end: 每一次打印的结尾,默认为换行符 flush: 立即把内容输出到流文件,不作缓存 """
file
f = open(\'tmp_file\',\'w\') print(123,456,sep=\',\',file = f,flush=True)
1.3 数据类型相关
type(o) 返回变量o的数据类型
l1=[1,\'223ew\',\'opt\'] print(type(l1))
1.4 内存相关
id(o) o是参数,返回一个变量的内存地址
l1=[1,\'223ew\',\'opt\'] print(id(l1)) #1259346930824(内存地址)
hash(o) o是参数,返回一个可hash变量的哈希值,不可hash的变量被hash之后会报错。
t = (1,2,3) l = [1,2,3] print(hash(t)) #可hash print(hash(l)) #会报错 """ 结果: TypeError: unhashable type: \'list\' “”“
hash函数会根据一个内部的算法对当前可hash变量进行处理,返回一个int数字。
*每一次执行程序,内容相同的变量hash值在这一次执行过程中不会发生改变。
1.5 文件操作相关
open() 打开一个文件,返回一个文件操作符(文件句柄)
操作文件的模式有r,w,a,r+,w+,a+ 共6种,每一种方式都可以用二进制的形式操作(rb,wb,ab,rb+,wb+,ab+)
可以用encoding指定编码.
文件操作详情:http://www.cnblogs.com/Robi-9662/p/8883412.html
1.6 模块相关
import os
1.7 帮助相关
在控制台执行help()进入帮助模式。可以随意输入变量或者变量的类型。输入q退出
或者直接执行help(o),o是参数,查看和变量o有关的操作
1.8 调用相关
callable(o),o是参数,看这个变量是不是可调用。
如果o是一个函数名,就会返回True
def func():pass print(callable(func)) #参数是函数名,可调用,返回True print(callable(123)) #参数是数字,不可调用,返回False
查看参数所属类型的所有内置方法
dir() 默认查看全局空间内的属性,也接受一个参数,查看这个参数内的方法或变量
print(dir(set)) #set可以调用的方法 #[\'__and__\', \'__class__\', \'__contains__\', \'__delattr__\', \'__dir__\', \'__doc__\', \'__eq__\', \'__format__\', \'__ge__\', \'__getattribute__\', \'__gt__\', \'__hash__\', \'__iand__\', \'__init__\', \'__init_subclass__\', \'__ior__\', \'__isub__\', \'__iter__\', \'__ixor__\', \'__le__\', \'__len__\', \'__lt__\', \'__ne__\', \'__new__\', \'__or__\', \'__rand__\', \'__reduce__\', \'__reduce_ex__\', \'__repr__\', \'__ror__\', \'__rsub__\', \'__rxor__\', \'__setattr__\', \'__sizeof__\', \'__str__\', \'__sub__\', \'__subclasshook__\', \'__xor__\', \'add\', \'clear\', \'copy\', \'difference\', \'difference_update\', \'discard\', \'intersection\', \'intersection_update\', \'isdisjoint\', \'issubset\', \'issuperset\', \'pop\', \'remove\', \'symmetric_difference\', \'symmetric_difference_update\', \'union\', \'update\']
1.9 数字相关
数字——数据类型相关:bool,int,float,complex
数字——进制转换相关:bin,oct,hex
bin 二进制
print(bin(10)) #0b1010
oct
print(oct(10)) #0o12
hex
print(hex(10)) 0xa
数字——数学运算:abs,divmod,min,max,sum,round,pow
abs
l1=[10,-9,-8,-11] for i in l1: print(abs(i)) #10 9 8 11
divmod 商余函数
print(divmod(55,8)) #(6, 7) #6为商 7为余
round
print(round(3.1415926)) #3 print(round(3.1415926,4)) ## 默认取整,小数精确 会四舍五入 #3.1416
pow
print(pow(2,3,5)) # (2**3)%5 # :3 print(pow(3,2,2)) #:1
sum
print(sum([1, 2, 3, 4, 5,6])) print(sum([1,2,3,4,5],start=1))
max
print(max([1,2,3,4,5])) #out:5 按绝对值比较大小 print(max([1,2,3,4,5,-8],key=abs)) #out:-8
min
print(min(1,-2,3,-4)) #-4 print(min(1,-2,3,-4,key=abs)) #1
2.0 数据结构相关
序列——列表和元组相关的:list和tuple
list详细链接:http://www.cnblogs.com/Robi-9662/p/8795763.html
tuple同上链接
序列——字符串相关的:str,format,bytes,bytearry,memoryview,ord,chr,ascii,rep
str详细链接:http://www.cnblogs.com/Robi-9662/p/8795763.html
ret = bytearray(\'alex\',encoding=\'utf-8\') print(id(ret)) print(ret[0]) ret[0] = 65 print(ret) print(id(ret))
ret = memoryview(bytes(\'你好\',encoding=\'utf-8\')) print(len(ret)) print(bytes(ret[:3]).decode(\'utf-8\')) print(bytes(ret[3:]).decode(\'utf-8\'))
序列:reversed,slice
reversed
l = (1,2,23,213,5612,342,43) print(l) print(list(reversed(l)))
slice
l = (1,2,23,213,5612,342,43) sli = slice(1,5,2) print(l[sli])
数据集合——字典和集合:dict,set,frozenset
数据集合:len,sorted,enumerate,all,any,zip,filter,map
len
l1=\'dsdfdwewqwertyt\' print(len(l1))
sorted
l1 = [1,3,5,-2,-4,-6] l2 = sorted(l1,key=abs) print(l1) print(l2)
enumerate
l = [\'苹果\', \'香蕉\'] for num,item in enumerate(l,1): print(num,item)
zip 拉链
ret = zip([1,2,3,4,5],(\'a\',\'b\',\'c\',\'d\'),(4,5,6)) #拉链方法 # print(ret) for i in ret: print(i)
filter
lst=[1,4,6,7,9,12,17] def func(num): return num %2==0 ret=filter(func,lst) print(ret) for i in ret: print(i)
map
map()函数接收两个参数,一个是函数,一个是序列,map将传入的函数依次作用到序列的每个元素,并把结果作为新的list返回。
L = [1,2,3,4,5,6,7,8] def f(num): return num**2 for i in map(f,L): print(i)
二、匿名函数
匿名函数:为了解决那些功能很简单的需求而设计的一句话函数
匿名函数简单应用
#这段代码 def calc(n): return n**n print(calc(10)) #换成匿名函数 calc = lambda n:n**n print(calc(10))
匿名函数可以和其他函数一起用
1 res = map(lambda x:x**2,[1,5,7,4,8]) 2 for i in res: 3 print(i) 4 5 输出 6 1 7 25 8 49 9 16 10 64
res = filter(lambda x:x>10,[5,8,11,9,15]) for i in res: print(i) 输出 11 15
#答案一 test = lambda t1,t2 :[{i:j} for i,j in zip(t1,t2)] print(test(t1,t2)) #答案二 print(list(map(lambda t:{t[0]:t[1]},zip(t1,t2)))) #还可以这样写 print([{i:j} for i,j in zip(t1,t2)])
面试题
1.下面程序的输出结果是: d = lambda p:p*2 t = lambda p:p*3 x = 2 x = d(x) x = t(x) x = d(x) print x 2.现有两元组((\'a\'),(\'b\')),((\'c\'),(\'d\')),请使用python中匿名函数生成列表[{\'a\':\'c\'},{\'b\':\'d\'}] 3.以下代码的输出是什么?请给出答案并解释。 def multipliers(): return [lambda x:i*x for i in range(4)] print([m(2) for m in multipliers()]) 请修改multipliers的定义来产生期望的结果。
以上是关于内置函数和匿名函数的主要内容,如果未能解决你的问题,请参考以下文章