内置函数和匿名函数
来源:互联网 发布:apache php 网站发布 编辑:程序博客网 时间:2024/04/30 11:53
截止到python版本3.6.2, python一共为我们提供了68个内置函数。
接下来就简单介绍下这些函数。
这里将函数分为六大类来介绍,常用函数会重点标明。
作用域相关类:
globals()和locals()
a = '这是全局变量a'def func(n): b = 'func中的局部变量b' print(locals()) def inner(): print(n) print(locals()) return innerfunc(1)print(globals())print(locals())
以字典的形式获取全局变量和局部变量
globals()函数–>以字典的形式返回全局变量
locals()函数–> 以字典的形式返回调用locals()函数所在的命名空间内的局部变量(可不是局部变量)
因此,如果globals和locals都在全局命名空间调用,返回的内容一致。
另:global关键字 和nonlocal关键字
迭代器/生成器相关类
range()函数
在python3中, range()函数返回一个产生整数序列的可迭代对象。
在python2中, range()函数则返回一个整数列表,xrange()返回的是一个可迭代对象。
因此对于range()函数可以切片,可以for循环,可以传参数(start, stop,step)
L = range(100)print(L[:3])print(list(L[:3]))print(list(L[-10:]))print(L[-2])print(list(range(1, 100, 2)))
iter()和next()
iter()函数
参数:可迭代对象
返回值:迭代器
print(iter('abc'))print([1, 3, 4].__iter__())
next()函数:从迭代器或者生成器中取值
参数:迭代器或者生成器
返回值:迭代器或者生成器中的值
next() == iterator.__next__()print(next(iter('abc')))print(iter('abc').__next__())
其他类
1,文件操作相关
open()函数
参数:文件名/文件绝对路径,打开模式,编码
with open(file_name, mode, encoding='') as file: passmode:'r', 'w', 'a', 'rb' ,'wb', 'ab'
2,调用相关
callable() 检测对象可不可调用
返回True或者False
3,查看内置属性和帮助
dir():查看对象的内置属性和方法。
help():查看对象的内置方法及其详细说明。
4,内存相关
id() 查看对象的内存地址
hash() hash函数
5,模块相关
import
6,输入和输出
input(): input()函数接收的是字符串
print()函数
print(self, *args, sep=’space’, end=’\n’, file=None)
sep关键字参数:指定分隔符
print(1, 2, 3)
print(1, 2, 3, sep=’*’)
end关键字参数:默认换行
print(1, 2, 3, end=”)
print(4, 5, 6)
实例:打印进度条
import timefor i in range(0, 101, 2): time.sleep(0.1) char_num = i // 2 per_str = '\r{}%%, {}\n'.format(i, char_num * '|') if i == 100 else'\r{}%%, {}'.format(i, char_num * '|') print(per_str, end='', flush=True)
7, 字符串类代码的执行
exec()和eval()
compile()函数:常用于编译。
exec函数和eval函数以python代码的形式执行一个字符串。
exec函数没有返回值,常用在流程代码的执行中,而eval函数有返回值,因此常用在值计算时。
exec_return = exec('1+ 2 + 3')eval_return = eval('1+ 2 + 3')print(exec_return)print(eval_return)exec("name = input('enter:')")
exec函数 ,eval函数,compile函数,慎重使用!!!!!
基础数据类型相关
1,和数字相关
bool(), int(), float(), complex()
2, 进制转换
bin(int)把十进制数字转为二进制
oct(int)把十进制数字转换为八进制
hex(int)把十进制数字转换为十六进制
print(bin(12))print(oct(12))print(hex(12))
3、数学运算
abs()求绝对值
divmod(a, b)商余函数 a/b–> a = 商, b= 余
print(divmod(1, 2))print(divmod(7, 2))
实例:分页 (网站类目107条数据, 一页10条。)
round() 按指定位数精确小数点
print(round(0.12345, 3))print(round(9.121212, 0))
pow()幂运算 pow(x, y, z) 如果只传x,y 返回值是x**y,
如果还传了z ,返回值是x**y%z, x的y次方除以z的余数
print(pow(2, 3))print(pow(2, 3, 5))print(pow(3, 2, 7))
sum(iterable) 求和函数
min() 求最小值
min(iterable, key=, default=) #key=函数名 按函数的条件取值 #default= 如果可迭代对象为空的话,可以设置返回值,不设置会报错。
print(min([1, 2, 3, 5, 0]))print(min([], default=0)) # 可迭代对象为空,返回值设置为0print(min([-9, 1, -23, 4], key=abs)) # 按绝对值的最小值取元素
max()函数用法同min()函数
数据结构相关
list(), tuple(), str(), set()
dict()函数参数为关键字参数
frozenset()将集合转换为不可变集合
reversed() :反转序列
可传参数:序列 最常用列表
返回值:迭代器
可以使用list()强转,reversed()函数不同于list.reverse()方法,他没有改变原序列,而是生成了一个新的序列。list.reverse() 没有返回值,直接修改的是原列表。
L = [1, 2, 3, 4, 5, 10]ret = reversed(L) # 生成迭代器print(ret)print(list(ret)) # 生成一个新的列表 不改变原列表print(L.reverse()) # 没有返回值print(L) # 对原列表进行反转操作, 改变了原列表
s = 'abcdefg'new_s = reversed(s)print(list(new_s))tu = (1, 2, 3, 2, 9, 5, 6)new_tu = reversed(tu)print(list(new_tu))
format()函数
主要用于字符串的格式化操作
format(str_obj, format_spec)
字符串的格式化方法:’{},{},{}’.format(a, b, c) 或 ‘%s’%(a)
#字符串的左对齐,居中,右对齐(居中 str.center()方法)print(format('format()', '<10'))print(format('format()', '>10'))print(format('format()', '^10'))s = 'format()'.center(10)print(s)
bytes()函数 :常用于网络编程中。
bytes(str_obj, encoding=’utf-8’)
返回一个新的bytes对象。
s = '你好呀,python'ret1 = bytes(s, encoding='utf-8')ret2 = bytes(s, encoding='gbk')print(ret1)print(ret2)print(s)
bytearray()函数:
对比较长的字符串做修改的时候,指定某一处进行修改,不会改变这个bytearry的内存地址。
bytearray(obj_s, encoding=’utf-8’)
ret = bytearray('alpha', encoding='utf-8') print(id(ret))print(ret[0])ret[0] = 65print(ret)print(id(ret))
memoryview()
ret = memoryview(bytes('你好', encoding='utf-8'))print(ret)print(len(ret))print(ret[:3])print(bytes(ret[:3]).decode('utf-8'))print(bytes(ret[3:]).decode('utf-8'))
ord(obj_s)
参数是一个字符(长度为一的字符串)
返回值是该字符的十进制整数
print(ord('a'))print(ord('b'))print(ord('你'))
chr(code)函数
参数是一个字符的十进制整数
返回该十进制整数表示的字符
print(chr(97))print(chr(98))print(chr(20320))
ascii() 只要是ASCII码中的内容就打印出来,不是就转换为\u的形式。
print(ascii('a'))print(ascii('你好'))print(ascii(10))
repr(obj)
返回对象的字符串形式
print(repr(1))print(type(repr(1)))print(repr('1'))print('name:%r' % ('mui'))print(repr([1, 2, 3, 4, 5]))print(type(repr([1, 2, 3, 4, 5])))
enumerate()枚举函数
enumerate(iterable, start=0)
返回enumerate枚举对象,常和for循环搭配使用。
print(enumerate('abc')) #>>> <enumerate object at 0x0000000001F7C678>print(list(enumerate('abc') #>>> [(1, 'a'), (2, 'b'), (3, 'c')]L = ['phone', 'apple', 'bear', 'tv']print(enumerate(L, 1))for i, j in enumerate(L, 1): print(i, j)
all()
检测对象里的元素是否有空元素,0,False,None
类似逻辑运算符’and‘
参数:all(iterable)
返回值:返回True或者False
print(all([1, 2, 3, 'a', 4, '']))print(all('abcd d f'))print(all((1, 2, 'abc d f ', 5)))print(all([0, 1]))print(all([None, 1]))print(all([1, 2, 3, False]))
!!!!!注意空元祖, 空字符串, 空列表返回的是True
print(all([]))print(all(()))print(all(''))
any(iterable)
检测可迭代参数是否全部为空对象,有一个不为空,返回True,
全部为空返回False,类似逻辑运算符 or。
print(any([False, None, 0, '', (), [], {}]))print(any([[False, None, 0, '', (), [], {}], 1]))print(any(''))print(any([]))print(any(()))
zip(iter1, iter2, iter3…..)拉链函数
zip()函数以最短长度的可迭代对象为基准,将参数可迭代对象中的元素一个个对应打包成元组。
返回值的是zip对象。
zipped = zip([1, 2, 3, 4], ['a', 'b', 'c'], ('哈哈', '呵呵', '嘿嘿'))print(zipped)print(list(zipped))#可以list强转,可以for循环取值for i in zipped: print(i)for x, y, z in zipped: print(x, y, z)
filter()函数 过滤函数
过滤序列中不符合条件的元素,返回由符合条件元素组成的filter对象。
filter(function, iterable)
def func(x): if x % 2 == 1: return Trueret = filter(func, [1, 2, 3, 4, 5, 7, 9])print(ret, type(ret))print(list(ret))ret = filter(lambda n: n % 2 == 1, [1, 2, 3, 4, 5, 6, 7] )print(list(ret))
#去掉所有的空内容和字符串中的空格l = ['test', None, '', 'str', ' ', 'END']def func(x): return x and x.strip()ret = filter(func, l)print(list(ret))l = ['test', None, '', 'str', ' ', 'END']ret = filter(lambda x: x and x.strip(), l)print(list(ret))
map(function, iterable)
以序列中的每一个元素为参数调用function函数,返回函数返回值组成的map对象
ret = map(abs, [-1, -2, -3, -4])print(ret)print(list(ret))ret = map(lambda x: x*x, [1, 2, 3, 4, 5])for i in ret: print(i, end=',')
sorted(iterable,key=None, reverse=False)
ps:max,min
返回(按一定条件)正序排序后的新列表
L = [1, 2, 3, 4, 7, 9, 5]ret = sorted(L)print(ret) # 返回一个新列表,正序(从小到大)排序过后的新列表print(L) # 不改变原列表# 但是L.sort() 直接修改的是原列表ret = sorted([1, -2, 1, 4, -3, -2], key=abs, reverse=True)print(ret)ret = sorted(['abc', 'ac', 'a', [1, 3, 4, 5]], key=len)print(ret)ret = sorted([1, 2, 1, 4, -3, -6], key=lambda x: x**2, reverse=True)print(ret)
待续……
匿名函数:
匿名函数Anonymous functions:解决简单功能需求的一句话函数。
一,
函数名 = lambda n: n**n
lambda:定义匿名函数的关键字。
n 函数参数,可有一个也可有多个。
:冒号后面是函数的返回值。
调用方式:函数名(参数)
二,
匿名函数常和其他功能函数结合使用(面试题必出)。
# 返回字典中值最大的键dic={'k1':10,'k2':100,'k3':30}print(max(dic.values()))print(max(dic))print(dic[max(dic,key=lambda k:dic[k])])#现有两个元组(('a'),('b')),(('c'),('d')),请使用python中匿名函数生成列表[{'a':'c'},{'b':'d'}]a = (('a'),('b'))b = (('c'),('d'))print([{i: j} for i, j in zip(a, b)])print(list(map(lambda t: {t[0], t[1]}, zip(a, b))))#以下代码的输出是什么?请给出答案并解释。def multipliers(): return [lambda x:i*x for i in range(4)]print([m(2) for m in multipliers()])#请修改multipliers的定义来产生期望的结果。
内置函数流程图参考链接:https://www.processon.com/view/link/597fcacfe4b08ea3e2454ece?pw=G76Z
- 匿名函数和内置函数
- 内置函数和匿名函数
- Day25-匿名函数和内置函数
- Python的内置函数和匿名函数
- 递归调用、二分法、匿名函数和内置函数
- 内置函数与lambda匿名函数
- Day 23 内置、匿名函数及递归
- 具名函数和匿名函数
- Scala函数和匿名函数
- typeof()和匿名函数
- 匿名函数和lambda表达式
- 匿名函数和闭包
- 匿名函数 和 拉姆达表达式
- js return和匿名函数
- 匿名函数和闭包
- 匿名函数和闭包
- lamda表达式和匿名函数
- 闭包和匿名函数
- 使用spring cloud config来统一管理配置文件
- 赋值中的类型转换
- vue生命周期及自定义指令
- python学习笔记--一些常用的tip
- 协方差矩阵
- 内置函数和匿名函数
- android 断点续传
- 微信小程序
- 有用网址
- Docker安装官方Redis镜像
- TCP/IP网络七层模型
- PYTHON : FOR 和 LIST 的使用
- js中的栈与堆的讲解/基本数据类型与引用类型的讲解
- 总结-2017/11/12