思维导图需要补全 :

一共有68个内置函数:

#内置:python自带
# def func():
# a = 1
# b = 2
# print(locals())
# print(globals())
# func() # range(100) #[0,100)
# range(5,100) #[5,100)
# range(1,100,2)
#可迭代对象,可以for循环,惰性运算
# range(100).__iter__()
# iterator = iter(range(100)) #拿到一个迭代器
# print(iterator.__next__())
# print(next(iterator))
# for i in range(100):
# print(i)
# def iter():
# return range(100).__iter__() # print(dir([]))
# print(dir(5))
# a = 1
# def func():pass
# print(callable(a)) #不可以调用
# print(callable(print)) #可以调用
# print(callable(func)) #可以调用 #ctrl + 左键单击 :pycharm
#help:包含所有方法名以及他的使用方法 —— 不知道用法
#dir:只包含方法名 —— 想查看某方法是否在这个数据类型中 import time #时间
import os #操作系统 # f = open('文件名','w',encoding='utf-8')
#打开模式:r、w、a、rb、wb,ab
#编码 utf-8/GBK # print(id(1))
# print(id(2))
# print(hash('sajghfj;eyrwodnvjnz,.jifupwk')) #算法
# print(hash(125342))
# print(hash((1,2,3,4))) #数据的存储和查找
#模块:hashlib
# {'k':'v'}
# [1,2,3,4,5,6,] # hash([1,2,3,4,5,6,])
#hash 判断一个数据类型是否可以hash
#在一个程序执行的过程中,对同一个值hash的结果总是不变
#多次执行,对同一个值的hash结果可能改变 # s = input('提示:')
# print(1,2,3,4,5,sep='*') #sep是指定多个要打印的内容之间的分隔符
# print(1,2,sep=',') #print('%s,%s'%(1,2))
# f = open('a','w')
# print('abc\n')
# print(2) # import time
# for i in range(0,101,2): #[0,2,4,6,8...100]
# time.sleep(0.2)
# char_num = i//2 #打印多少个'*' 8/2 = 4
# if i == 100:
# per_str = '\r%s%% : %s\n' % (i, '|' * char_num)
# else:
# per_str = '\r%s%% : %s'%(i,'|'*char_num)
# print(per_str,end='', flush=True)
# print('你好')
# print('再见')
#ftp == 网盘
# print("\033[31;1mHello world,how are you \033[0m")
# print('\033[4;32;41m金老师')
# print('egon')
# print('alex \033[0m') # exec("print('12345')")
# eval("print('12345')")
# print(exec('1+2+3-4'))
# print(eval('1+2+3-4'))
# a = 1+2+3-4
# print(1+2+3-4) # code1 = 'for i in range(0,10): print (i)'
# compile1 = compile(code1,'','exec')
# exec(compile1) #简单求值表达式用eval
# code2 = '1 + 2 + 3 + 4'
# compile2 = compile(code2,'','eval')
# print(eval(compile2)) # code3 = 'name = input("please input your name:")'
# compile3 = compile(code3,'','single')
# # name #执行前name变量不存在
# exec(compile3)
# print(name) #exec
#eval
#compile # print(abs(5)) # ret = divmod(10,2) #商余
# print(ret)
# ret = divmod(3,2)
# print(ret)
# ret = divmod(7,2)
# print(ret) #
#
# divmod(107,10) # print(round(3.14159,2)) # print(pow(2,3.5)) #幂运算
# print(pow(3,2))
# print(pow(2,3,2))
# print(pow(2,3,3)) #x**y%z # print(sum([1,2,3,4,5,6],-2))
# print(sum(range(100)))
#sum接收一个可迭代对象 #min
# print(min([1,4,0,9,6]))
# print(min([],default=0))
print(min([-9,1,23,5],key=abs))#匿名函数
# print(min({'z':1,'a':2})) # t = (-25,1,3,6,8)
# print(max(t))
# print(max(t,key = abs))
# print(max((),default=100))

前情概要:

def wrapper1(func):
def inner1(*args,**kwargs):
print('in wrapper 1,before')
ret = func(*args,**kwargs) #qqxing
print('in wrapper 1,after')
return ret
return inner1 def wrapper2(func): #inner1
def inner2(*args,**kwargs):
print('in wrapper 2,before')
ret = func(*args,**kwargs) #inner1
print('in wrapper 2,after')
return ret
return inner2 @wrapper2
@wrapper1
def qqxing():
print('qqxing') qqxing() #inner2

内置函数补全:

# l = [3,4,2,5,7,1,5]       #
# ret = reversed(l)
# print(ret)
# print(list(ret))
# #next ,__next__
# #for
# l.reverse()
# print(l) # l = (1,2,23,213,5612,342,43)
# sli = slice(1,5,2) #实现了切片的函数
# print(l[sli])
#
# #l[1:5:2] 语法糖 # print(format('test', '<20'))
# print(format('test', '>20'))
# print(format('test', '^20')) #网络编程的时候:能在网络上传递的必须是字节
# ret = bytes('你好,哈哈哈,再见',encoding='utf-8')
# #中间是网络传输的过程
# print(ret.decode(encoding='utf-8')) # ret = bytearray('alex',encoding='utf-8') #对比较长的字符串做修改的时候,指定某一处进行修改,不会改变这个bytearry的内存地址
# print(id(ret))
# print(ret[0])
# ret[0] = 65
# print(ret)
# print(id(ret)) #切片
# l = [1,2,3,4,5,60]
# l[1:3] # 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')) # print(ord('a'))
# print(chr(97))
# print(ascii(97)) # print(repr(1))
# print(repr('1'))
# print('name : %r'%('金老板')) # l = ['笔记本','phone','apple','banana']
# for i,j in enumerate(l,1):
# print(i,j) # print(all([1,2,3,4,0]))
# print(all([1,2,3,4]))
# print(all([1,2,3,None]))
# print(all([1,2,3,''])) # print(any([True,None,False]))
# print(any([False,None,False])) #拉链函数
# print(list(zip([0,1,2,3,4],[5,6,7,8],['a','b']))) #过滤函数
# def is_odd(x):
# if x>10:
# return True
# ret = filter(is_odd, [1, 4, 6, 7, 9, 12, 17])
# print(list(ret)) # def is_odd(x):
# if x%2 == 0:
# return True
# ret = filter(is_odd, [1, 4, 6, 7, 9, 12, 17])
# print(list(ret)) #filter就是有一个可迭代对象,想要一个新的内容集,是从原可迭代对象中筛选出来的
# def func(x):
# #return x.strip() #‘ ’.strip() ==> '' ==> return False
# # 'test'.strip() ==> 'test'
# return x and x.strip() #None False and
#去掉所有的空内容和字符串中的空格
# l = ['test', None, '', 'str', ' ', 'END']
# ret = filter(func,l)
# print(list(ret))
#新内容少于等于原内容的时候,才能用到filter #新内容的个数等于原内容的个数
# ret = map(abs,[-1,-5,6,-7]) #abs(-1) = 1 abs(-5) = 5
# print(list(ret)) #filter和map
#参数很相近:都是一个函数名+可迭代对象
#且返回值页很相近:都是返回可迭代对象
#区别
#filter是做筛选的,结果还是原来就在可迭代对象中的项
#map是对可迭代对象中的每一项做操作的,结果不一定是原来就在可迭代对象中的项 #有一个list, L = [1,2,3,4,5,6,7,8],我们要将f(x)=x^2作用于这个list上,那么我们可以使用map函数处理
# def func(x):
# return x*x
# ret = map(func,[1,2,3,4,5,6,7,8])
# print(list(ret)) #sort 是直接修改原列表的顺序,节省内存
#sorted 是生成一个新列表,不改变原来的列表
#key = func
# print(sorted([-5,3,-4,2,-1],reverse=True))
# print(sorted([-5,3,-4,2,-1],key=abs)) # l2 = ['ajkhs',(1,2),'a',[1,2,3,4]]
# print(sorted(l2,key=len,reverse=True)) # print(ascii('a'))
# print(ascii(1))

匿名函数:

# def calc(n):return n**n
# print(calc(10)) # cal = lambda n:n**n #lambda表达式、匿名函数
# cal = lambda: 1==2 #lambda表达式、匿名函数
# cal = lambda n: True if 1==2 else False #lambda表达式、匿名函数
# print(cal())
# def add(x,y):return x+y
# add = lambda x,y:x+y
# print(add(1,2)) # print(max([1,2,3,4,-5],key=abs)) # dic={'k1':10,'k2':100,'k3':30}
# # print(max(dic.values()))
# # print(max(dic))
# print(max(dic,key=lambda k:dic[k])) # def func(x):
# return x*x
# ret = map(lambda x:x*x,[1,2,3,4,5,6,7,8])
# print(list(ret))
# def func(num):
# return num>99 and num<1000
ret = filter(lambda num: num>99 and num<1000,[1,4,6,823,67,23])
print(list(ret)) # def func(num):
# if num > 10:
# return True
#return num>10
ret = filter(lambda num:num>10,[1,4,6,823,67,23])
ret = filter(lambda num:True if num>10 else False,[1,4,6,823,67,23])
print(list(ret))
#max min
#map filter

这是一道经典题:关于lambda表达式加上列表生成式

def num():
return [lambda x:i*x for i in range(4)]
"""
这里的range(4)就是循环0,1,2,3到3截止,然后得到的是4个lambda函数,这个列表是列表生成式,这个生成式直接就把执行后的结果返回给了这个列表里面,
所以我们得到的这个列表本身就是里面的for循环执行后的结果,那么这个for循环执行完这个i就是3,所以就得到下面的lambda表达式里面的i=3
[lambda x:3*x,lambda x:3*x,lambda x:3*x,lambda x:3*x]这里就是返回值,
一个列表,每一个列表中的元素都是一个lambda函数
]
"""
print([m(2) for m in num()])这里也是一个列表生成式,里面的num()会先执行,就触发了我们上面的函数,得到返回值是一个列表,列表里面是一个个lambda表达式的函数,
然后循环这个列表,把每一个函数进行传参调用,得到的就是我们上面的函数被调用加上参数的结果,就是lambda 2:2*3 结果就是6,每一个lambda都是6这个结果,最终打印的结果是[6,6,6,6]

匿名函数进阶的面试题:

# d = lambda p:p*2
# t = lambda p:p*3
# x = 2
# x = d(x) #4 = d(2)
# x = t(x) #12 = t(4)
# x = d(x) #24 = d(12)
# print(x) #2.现有两元组(('a'),('b')),(('c'),('d')),
# 请使用python中匿名函数生成列表[{'a':'c'},{'b':'d'}]
# t1 = (('a'),('b'))
# t2 = (('c'),('d'))
# t3 = zip(t1,t2) #[('a','c'),('b','d')]
# print(list(map(lambda t:{t[0]:t[1]},[('a','c'),('b','d')]))) #3.
def multipliers():
return (lambda x:i*x for i in range(4))
print([m(2) for m in multipliers()])
# i = 0
# m = lambda x:i*x
# m(2)
# i = 1
# m = lambda x:i*x
# m(2)

这些面试题里面最后一道题太难了,需要加上注释,要周末的时候把它搞明白,然后把加了注释的版本贴上来。

内置函数未完待续。。。

day16 函数的用法:内置函数,匿名函数的更多相关文章

  1. python学习日记(内置、匿名函数练习题)

    用map来处理字符串列表 用map来处理字符串列表,把列表中所有水果都变成juice,比方apple_juice fruits=['apple','orange','mango','watermelo ...

  2. python(内置高阶函数)

    1.高阶函数介绍: 一个函数可以作为参数传给另外一个函数,或者一个函数的返回值为另外一个函数(若返回值为该函数本身,则为递归),如果满足其一,则为高阶函数. 常见的高阶函数:map().sorted( ...

  3. Hive 文件格式 & Hive操作(外部表、内部表、区、桶、视图、索引、join用法、内置操作符与函数、复合类型、用户自定义函数UDF、查询优化和权限控制)

    本博文的主要内容如下: Hive文件存储格式 Hive 操作之表操作:创建外.内部表 Hive操作之表操作:表查询 Hive操作之表操作:数据加载 Hive操作之表操作:插入单表.插入多表 Hive语 ...

  4. 生成器的send方法、递推函数、匿名函数及常用内置函数

    生成器的send方法 在使用yield方法创建生成器时,不仅可以使用next方法进行取值,还可以通过send方法向生成器的内部传值 什么是send方法? send方法相当于高级的next方法,send ...

  5. Python中匿名函数与内置高阶函数详解

    大家好,从今天起早起Python将持续更新由小甜同学从 初学者的角度 学习Python的笔记,其特点就是全文大多由 新手易理解 的 代码与注释及动态演示 .刚入门的读者千万不要错过! 很多人学习pyt ...

  6. 文成小盆友python-num3 集合,函数,-- 部分内置函数

    本接主要内容: set -- 集合数据类型 函数 自定义函数 部分内置函数 一.set 集合数据类型 set集合,是一个无序且不重复的元素集合 集合基本特性 无序 不重复 创建集合 #!/bin/en ...

  7. python 函数 装饰器 内置函数

    函数 装饰器 内置函数 一.命名空间和作用域 二.装饰器 1.无参数 2.函数有参数 3.函数动态参数 4.装饰器参数 三.内置函数 salaries={ 'egon':3000, 'alex':10 ...

  8. JMeter 内置日期(时间)函数总结

    JMeter 内置日期(时间)函数总结   by:授客 QQ:1033553122 1. 测试环境 apache-jmeter-3.3 下载地址: http://jmeter.apache.org/c ...

  9. python 练习题:请利用Python内置的hex()函数把一个整数转换成十六进制表示的字符串

    # -*- coding: utf-8 -*- # 请利用Python内置的hex()函数把一个整数转换成十六进制表示的字符串 n1 = 255 n2 = 1000 print(hex(n1)) pr ...

  10. JavaScript封装一个函数效果类似内置方法concat()

    JavaScript封装一个函数效果类似内置方法concat() 首先回忆concat()的作用: concat() 方法用于连接两个或多个数组.该方法不会改变现有的数组,而仅仅会返回被连接数组的一个 ...

随机推荐

  1. LVM初级配置

    步骤: 1.将物理硬盘转换成物理卷(PV) 创建PV:pvcreate /dev/vdb 2.将PV添加到卷组中(VG) vgcreate vg0 /dev/vdb 3.创建逻辑卷(LV)并从VG中调 ...

  2. python-面向对象入门

    一.面向对象介绍 介绍面向对象之前,先来回顾一下以前学的面向过程的编程思想 面向过程编程: 核心是过程二字,过程指的是解决问题的步骤,即先干什么,再干什么后干什么,基于该思想编程就好比是在设计一条流水 ...

  3. Golang服务器热重启、热升级、热更新(safe and graceful hot-restart/reload http server)详解

    服务端代码经常需要升级,对于线上系统的升级常用的做法是,通过前端的负载均衡(如nginx)来保证升级时至少有一个服务可用,依次(灰度)升级. 而另一种更方便的方法是在应用上做热重启,直接更新源码.配置 ...

  4. Java学习——集合框架【4】

    一.集合框架 集合框架是一个用来代表和操纵集合的统一架构.所有的集合框架都包含如下内容: 接口:是代表集合的抽象数据类型.接口允许集合独立操纵其代表的细节.在面向对象的语言,接口通常形成一个层次. 实 ...

  5. Vue2.0 新手完全填坑攻略—从环境搭建到发布

    http://www.open-open.com/lib/view/open1476240930270.html https://jingyan.baidu.com/article/91f5db1b2 ...

  6. MySQL之IDE工具介绍及数据备份

    一.IDE工具介绍 生产环境还是推荐使用mysql命令行,但为了方便我们测试,可以使用IDE工具 下载链接:https://pan.baidu.com/s/1bpo5mqj 二.MySQL数据备份 # ...

  7. 《剑指offer》 二进制中1的个数

    本题来自<剑指offer> 二进制中1的个数 题目: 输入一个整数,输出该数二进制表示中1的个数.其中负数用补码表示. 思路: 两种思路: 第一种:对n进行左移,检测最后一位是否为1,但考 ...

  8. HTML 转义字符对应表

    <%@ tag language="java" pageEncoding="UTF-8" %> <%@ attribute name=&quo ...

  9. 伪Ap接入点

    1.创建一个伪造的Ap接入点,必须购买一个无线网卡的设备,接受功率在300Mbps ,低于这个传输速率的值,效果很差,都达到用户可以连接验证的效果.其芯片必须支持kali linux 内核系统. 2. ...

  10. uva11865 二分流量+最小生成树

    uva好题真多 本题用二分法找flow,把流量小于flow的全部筛掉,剩下的边建立最小树形图,如果权值大于c或者不能建图,那么修改二分边界 上代码,觉得最小树形图的代码很优美 /* 题意:给定n个点, ...