一、递归函数

  定义:在一个函数里调用这个函数本身

  递归的最大深度:997

def func(n):
print(n)
n += 1
func(n)
func(1)

测试递归最大深度

import sys
print(sys.setrecursionlimit(10000))

修改递归最大深度

二、内置函数

  python提供了68个内置函数

    Built-in Functions    
abs() dict() help() min() setattr()
all() dir() hex() next() slice()
any() divmod() id() object() sorted()
ascii() enumerate() input() oct() staticmethod()
bin() eval() int() open() str()
bool() exec() isinstance() ord() sum()
bytearray() filter() issubclass() pow() super()
bytes() float() iter() print() tuple()
callable() format() len() property() type()
chr() frozenset() list() range() vars()
classmethod() getattr() locals() repr() zip()
compile() globals() map() reversed() __import__()
complex() hasattr() max() round()  
delattr() hash() memoryview() set()  

  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学习(八) —— 内置函数和匿名函数的更多相关文章

  1. python学习交流 - 内置函数使用方法和应用举例

    内置函数 python提供了68个内置函数,在使用过程中用户不再需要定义函数来实现内置函数支持的功能.更重要的是内置函数的算法是经过python作者优化的,并且部分是使用c语言实现,通常来说使用内置函 ...

  2. python学习之--内置函数:

    Python内置函数: Python内置了很多有用的函数,我们可以直接调用.要调用一个函数,需要知道函数的名称和参数,比如求绝对值的函数abs,只有一个参数. 1. 内置函数调用之--abs()函数: ...

  3. Python学习之==>内置函数、列表生成式、三元表达式

    一.内置函数 所谓内置函数就是Python自带的函数 print(all([0,2,3,4])) #判断可迭代的对象里面的值是否都为真 print(any([0,1,2,3,4])) #判断可迭代的对 ...

  4. python学习总结----内置函数及数据持久化

    抽象基类(了解) - 说明: - 抽象基类就是为了统一接口而存在的 - 它不能进行实例化 - 继承自抽象类的子类必须实现抽象基类的抽象方法 - 示例: from abc import ABC, abs ...

  5. python学习之- 内置函数

    内置方法:1:abs():取绝对值2:all():当可迭代对象里所有均为真时结果为真. all([1,2,3])3:any():当可迭代对象里任意一个数据为真结果即为真.any([0,1,2])4:a ...

  6. Python学习(5)——内置函数

    常用字符串内置函数 1)str.count() //返回该字符串中某个子串出现的次数 2)str.find() //返回某个子串出现在该字符串的起始位置 3)str.lower() //将该字符串全部 ...

  7. python学习-31 内置函数

    内置函数 1.abs()  绝对值 2.all()    判断列表里的所有值的布尔值(如果迭代列表里的每个值后都是True 则返回True) '])) 运行结果: True Process finis ...

  8. python学习-34 内置函数的补充

    其他内置函数 1.ord()    与chr()相反 2.pow() print(pow(3,3)) # 相当于3**3 print(pow(3,3,2)) # 相当于3*3%2 运行结果: 27 1 ...

  9. 学习Pytbon第十天 函数2 内置方法和匿名函数

    print( all([1,-5,3]) )#如果可迭代对象里所有元素都为真则返回真.0不为真print( any([1,2]) )#如果数据里面任意一个数据为真返回则为真a= ascii([1,2, ...

  10. python学习(内置函数)

    1.id()返回对象的内存地址 a = 1 print id(a) print id(1) 2.int()用于将数据类型转换为整型 a = " b = 2 print int(a) + b ...

随机推荐

  1. C# AutoResetEvent 使用整理

    AutoResetEvent 允许线程通过发信号互相通信.通常,此通信涉及线程需要独占访问的资源. 线程通过调用 AutoResetEvent 上的 WaitOne 来等待信号.如果 AutoRese ...

  2. mysql管理工具percona-toolkit-3简单使用介绍

    安装percona-toolkit-3 # -.el6.x86_64.rpm :.el6 -y 1.pt-summary #显示和系统相关的基本信息: [root@master ~]# pt-summ ...

  3. thinkphp中的内置操作数据库与mysql中的函数汇总

    8.4.4 Model类getModelName() 获取当前Model的名称getTableName() 获取当前Model的数据表名称switchModel(type,vars=array()) ...

  4. Laravel 5.2服务----用户验证Auth相关问题

    关于laravel的auth()用户认证这一块,面前我也是,有用到,有碰到什么问题我就记录下来. 手动认证用户 <?php namespace App\Http\Controllers; use ...

  5. 如何去掉li标签的重叠边框

    当我们的li标签设置了border的时候就会出现重叠边框,如何去掉呢,见代码 html代码 <ul class="friendLink_list"> <li> ...

  6. Confluence 6 安全相关问题提交链接

    找到和报告安全漏洞 Atlassian 有关安全漏洞的报告细节,请参考如何报告一个安全问题(How to Report a Security Issue)链接. 发布 Confluence 安全公共 ...

  7. Confluence 6 数据中心的 SAML 单点登录最佳实践和故障排除

    最佳实践 SAML 授权仅仅在有限的时间进行校验.你需要确定运行你的应用的计算机时间与 IdP 的时间是同步的. 如果你应用中的用户和用户组是通过用户目录进行配置的,你通常希望用户来源目录和你的 Id ...

  8. MySQL、MongoDB、Redis 数据库之间的区别

    NoSQL 的全称是 Not Only SQL,也可以理解非关系型的数据库,是一种新型的革命式的数据库设计方式,不过它不是为了取代传统的关系型数据库而被设计的,它们分别代表了不同的数据库设计思路. M ...

  9. js中return false,return,return true的用法及差别

    起首return作为返回关键字,他有以下两种返回体式格式 1.返回把握与函数成果 语法为:return 表达式; 语句停止函数履行,返回调用函数,并且把表达式的值作为函数的成果 2.返回把握无函数成果 ...

  10. PYMySQL的注册功能的实现

    import pymysql conn = pymysql.connect( host = "127.0.0.1", port = 3306, user = "root& ...