Python学习(八) —— 内置函数和匿名函数
一、递归函数
定义:在一个函数里调用这个函数本身
递归的最大深度:997
def func(n):
print(n)
n += 1
func(n)
func(1)
测试递归最大深度
import sys
print(sys.setrecursionlimit(10000))
修改递归最大深度
二、内置函数
python提供了68个内置函数
1.作用域相关的内置函数:globals,locals
def func():
a = 1
b = 2
print(globals()) #查看全局变量
print(locals()) #查看局部变量
func()
2.迭代器/生成器相关的内置函数:range,iter,next
a = range(1,100,2) #range是可迭代对象
b = iter(a) #iter得到迭代器
print(next(b)) #打印迭代器第一个元素
print(next(b)) #打印迭代器下一个元素
3.查看内置属性:dir
print(dir(1))
print(dir('abc'))
print(dir(list))
4.判断函数是否可以调用:callable
def a():print(1)
print(callable(a))
5.帮助:help
help(list)
help(str)
6.导入模块:import
import os
import time
import copy
7.打开文件:open
with open('abc','r',encoding='utf-8') as f:
print(f.read())
8.内存相关的内置函数:id,hash
print(id('')) #打印内存地址
print(id([1,2,3])) #打印内存地址
print(hash((1,2,3))) #打印哈希值
print(hash([1,2,3])) #报错
9.输入输出相关的内置函数:input,print
content = input('请输入内容:') #input:与用户交互
print(content)
print('abc','def',sep='*',end='') #sep=以...为分隔,end=以...为结尾
print('ghj') #打印进度条
import time
for i in range(0,101,2):
time.sleep(0.1)
n = i // 2
a = '\r%d%% : %s\n'%(i,'*'*n) if i == 100else '\r%d%% : %s'%(i,'*'*n)
print(a,end='',flush=True) #flush把光标移动到最前面,以空字符结尾
10.字符串类型代码的执行:exec,eval,compile
eval()将字符串类型的代码执行并返回结果
exec()将字符串类型的代码执行
compile()将字符串类型的代码编译。代码对象能够通过exec语句来执行或者eval语句进行求值
参数说明:
1. 参数source:字符串或者AST(Abstract Syntax Trees)对象。即需要动态执行的代码段。
2. 参数 filename:代码文件名称,如果不是从文件读取代码则传递一些可辨认的值。当传入了source参数时,filename参数传入空字符即可。
3. 参数model:指定编译代码的种类,可以指定为 ‘exec’,’eval’,’single’。当source中包含流程语句时,model应指定为‘exec’;当source中只包含一个简单的求值表达式,model应指定为‘eval’;当source中包含了交互式命令语句,model应指定为'single'。
code1 = '1+2+3'
code2 = "print('abc')"
print(eval(code1),eval(code2))
print(exec(code1),exec(code2))
# abc
# 6 None
# abc
# None None
#流程语句使用exec
code1 = """
for i in range(10):
if i % 2 == 1:
print(i)
"""
compile1 = compile(code1,'','exec')
exec(compile1) #简单求值表达式用eval
code2 = '1+2+3+4'
compile2 = compile(code2,'','eval')
print(eval(compile2)) #交互语句用single
code3 = "name = input('请输入命令:')"
compile3 = compile(code3,'','single')
eval(compile3)
print(name)
compile
11.数字的数据类型相关:bool,int,float,comple(布尔值,整数,浮点数,复数)
print(type(True))
print(type(123))
print(type(123.0))
print(type(12+3j)) #<class 'bool'>
#<class 'int'>
#<class 'float'>
#<class 'complex'>
12.进制转换相关:bin,ort,hex(二进制,八进制,十六进制)
print(bin(20)) #0b10100
print(oct(20)) #0o24
print(hex(20)) #0x14
13.数学运算相关:abs(求绝对值),divmod(求商余),round(精确小数),pow(幂运算)
print(abs(-3)) # print(divmod(5,3)) #(1,2) print(round(3.14159,4)) #3.1416 print(pow(2,3)) #
14.计算总数:sum(iterable,start=0)
print(sum([1,2,3],2)) #2+1+2+3 = 8
print(sum((4,5,6,7),10)) #10+4+5+6+7
print(sum((),5)) #
15.计算最大值:max(iterable,key=,default=)、max(*args,key=)
print(max((1,-2,3,-4,5),default=0)) #
print(max([1,2,3,-5,-6],key=abs)) #-6
print(max('A','a',)) #a
print(max(1,2,3,-4)) #
16.计算最小值:min(iterable,key=,default=)、min(*args,key=)
print(min(1,2,3,4,-5,key=abs)) #-5
print(min([1,-2,3,-4,5],default=0)) #-4
print(min([],default=1)) #
17.列表和元组:list,tuple
a = range(8)
b = (i for i in range(5)) #一个生成器只能取一次值
print(list(a)) #[0, 1, 2, 3, 4, 5, 6, 7]
print(list(b)) #[0, 1, 2, 3, 4]
print(tuple(a)) #(0, 1, 2, 3, 4, 5, 6, 7)
print(tuple(b)) #()
18.列表和元组相关内置函数:reversed(接收可迭代对象,返回迭代器),slice(切片)
l = [1,-5,3,4,-2,8]
a = ''
print(reversed(l)) #返回迭代器
print(list(reversed(l))) #[8, -2, 4, 3, -5, 1]
print(list(reversed(a))) #['3', '2', '1']
print(l[slice(2,5,2)]) #[3,-2]
19.字符串相关:str,bytes:bytes(s,encoding='utf-8'),能在网络上传递的必须是字节
a = '你好'
print(bytes(a,encoding='gbk')) #b'\xc4\xe3\xba\xc3'
print(bytes(a,encoding='utf-8')) #b'\xe4\xbd\xa0\xe5\xa5\xbd'
b = '世界'
ret = bytes(b,encoding='utf-8')
print(ret.decode('utf-8')) #世界
20.bytearray:bytearray(s,encoding='utf-8'),字节数组,修改字符串,不会改变字节数组的内存地址,适用于修改多处较长的字符串
ret = bytearray('alex',encoding='utf-8')
print(id(ret))
print(ret[0]) #
ret[0] = 65
print(ret) #bytearray(b'Alex')
print(id(ret))
21.memoryview:memoryview(bytes('hello,eva',encoding='utf-8')),对bytes类型进行切片,不生成新的值
ret = memoryview(bytes('你好',encoding='utf-8'))
print(ret[:3]) #memory的内存地址
print(len(ret)) #
print(bytes(ret[:3]).decode('utf-8')) #你
22.ord:字符按照unicode转数字
chr:数字按照unicode转字符
ascii:只要是ascii码中的内容,就打印出来,不是就转换成\u
print(ord('a')) #
print(chr(97)) #a
print(ord('你')) #
print(chr(12345)) #〹
print(ascii('*')) #'*'
print(ascii('爱')) #'\u7231'
23.rapper:用于%r格式化输出,打印字符串会把引号打印出来
print(123) #
print('') #
print(repr('')) #'123'
print({'key:%r'%('value')}) #{"key:'value'"}
24.dict:字典,set:集合,forzenset:不可变集合,len:计算长度
25.enumerate:枚举,会生成序列号
for i in enumerate(range(5),1):
print(i) #(1, 0)
#(2, 1)
#(3, 2)
#(4, 3)
#(5, 4)
26.all:接收一个可迭代对象,只要有一个为False,则返回False
any:接收一个可迭代对象,只要有一个为True,则返回True
print(all([1,2,3,None])) #False
print(any([1,0,{},''])) #True
27.zip:拉链函数,接收多个可迭代对象,以短的为基准,进行匹配,返回一个迭代器
print(zip([0,1,2,3,4],[5,6,'a','b'])) #返回迭代器
print(list(zip([0,1,2,3,4],[5,6,'a','b']))) #[(0, 5), (1, 6), (2, 'a'), (3, 'b')]
print(list(zip([0,1,2,3],[5,6,7,8],['a','b']))) #[(0, 5, 'a'), (1, 6, 'b')]
28.filter:筛选函数,前面接收函数名,后面接收可迭代对象,返回一个迭代器,只筛选结果为True的元素
map:前面接收函数名,后面接收可迭代对象,返回一个迭代器,将可迭代对象按照函数的功能进行操作并把结果返回
def func(x):
return x and x.strip()
ret = filter(func,['test',None,'','str',' ','END'])
print(list(ret)) #['test', 'str', 'END'] def func1(n):
return n**2
ret1 = map(func1,[1,2,-3,-4,5])
print(list(ret1)) #[1, 4, 9, 16, 25]
29:sorted:从小到大排序,生成一个新列表,sort:从小到大排序,直接改变原列表的顺序
l = [1,2,-3,-4,5]
print(sorted(l)) #[-4, -3, 1, 2, 5]
print(sorted(l,reverse=True)) #[5, 2, 1, -3, -4]
print(l) #[1, 2, -3, -4, 5]
Python学习(八) —— 内置函数和匿名函数的更多相关文章
- python学习交流 - 内置函数使用方法和应用举例
内置函数 python提供了68个内置函数,在使用过程中用户不再需要定义函数来实现内置函数支持的功能.更重要的是内置函数的算法是经过python作者优化的,并且部分是使用c语言实现,通常来说使用内置函 ...
- python学习之--内置函数:
Python内置函数: Python内置了很多有用的函数,我们可以直接调用.要调用一个函数,需要知道函数的名称和参数,比如求绝对值的函数abs,只有一个参数. 1. 内置函数调用之--abs()函数: ...
- Python学习之==>内置函数、列表生成式、三元表达式
一.内置函数 所谓内置函数就是Python自带的函数 print(all([0,2,3,4])) #判断可迭代的对象里面的值是否都为真 print(any([0,1,2,3,4])) #判断可迭代的对 ...
- python学习总结----内置函数及数据持久化
抽象基类(了解) - 说明: - 抽象基类就是为了统一接口而存在的 - 它不能进行实例化 - 继承自抽象类的子类必须实现抽象基类的抽象方法 - 示例: from abc import ABC, abs ...
- python学习之- 内置函数
内置方法:1:abs():取绝对值2:all():当可迭代对象里所有均为真时结果为真. all([1,2,3])3:any():当可迭代对象里任意一个数据为真结果即为真.any([0,1,2])4:a ...
- Python学习(5)——内置函数
常用字符串内置函数 1)str.count() //返回该字符串中某个子串出现的次数 2)str.find() //返回某个子串出现在该字符串的起始位置 3)str.lower() //将该字符串全部 ...
- python学习-31 内置函数
内置函数 1.abs() 绝对值 2.all() 判断列表里的所有值的布尔值(如果迭代列表里的每个值后都是True 则返回True) '])) 运行结果: True Process finis ...
- python学习-34 内置函数的补充
其他内置函数 1.ord() 与chr()相反 2.pow() print(pow(3,3)) # 相当于3**3 print(pow(3,3,2)) # 相当于3*3%2 运行结果: 27 1 ...
- 学习Pytbon第十天 函数2 内置方法和匿名函数
print( all([1,-5,3]) )#如果可迭代对象里所有元素都为真则返回真.0不为真print( any([1,2]) )#如果数据里面任意一个数据为真返回则为真a= ascii([1,2, ...
- python学习(内置函数)
1.id()返回对象的内存地址 a = 1 print id(a) print id(1) 2.int()用于将数据类型转换为整型 a = " b = 2 print int(a) + b ...
随机推荐
- 持续集成之⑤:jenkins结合脚本实现代码自动化部署及一键回滚至上一版本
持续集成之⑤:jenkins结合脚本实现代码自动化部署及一键回滚至上一版本 一:本文通过jenkins调用shell脚本的的方式完成从Git服务器获取代码.打包.部署到web服务器.将web服务器从负 ...
- oracle 11.2.0.4 rac 打补丁
本次安装pus环境是11.2.0.4 rac,打的patch为11.2.0.4.180717 (Includes Database PSU),gi补丁和数据库补丁一起打 安装最新opatch版本 un ...
- mysql5.7 pxc
pxc优点总结:可以达到时时同步,无延迟现象发生完全兼容MySQL对于集群中新节点的加入,维护起来很简单数据的强一致性不足之处总结:只支持Innodb存储引擎存在多节点update更新问题,也就是写放 ...
- CF D. One-Dimensional Battle Ships
一个set水 + 区间判断个数问题.... #include<iostream> #include<cstdio> #include<cstring> #inclu ...
- 安装fastDFS的依赖包fdfs_client报错解决方法
输入以下指令后再尝试安装 python3环境下输入: sudo apt-get install python3 python-dev python3-dev build-essential libss ...
- grep匹配某个次出现的次数
cat file | grep -c 'xxx' 统计xxx在file中出现的行数 cat file | grep -o 'xxx' 统计xxx在file中出现的次数
- deepin 桌面突然卡死
deepin桌面突然卡死 使用快捷键Ctrl+alt+F2 重启systemctl
- phpstudy添加redis扩展
操作系统 windows: 直接贴步骤记录下 一. 划重点,运行phpinfo(), 观察第四行 x86 好了记住这个 x86 三. http://pecl.php.net/pa ...
- 【sqli-labs】Less7
Less-7: 输出文件 sql导出文件语句 select * from table_test into outfile 'test.txt' 既然名字是输出文件,那肯定是和文件有关系. 首先,确保s ...
- skipfish web Scrabble
1.skipfish 网页扫描抓取 2.w3af web漏洞扫描