day20 匿名函数,内置函数,面向过程编程
有名函数
def f1():
print('my name is f1')
f1()
my name is f1
匿名函数
- 没有函数名的函数
- lambda关键字定义
- 语法:
- lambda x,y(参数): x+y(逻辑代码)
# 这样做就成了一个有名函数了
f = lambda x,y:x+y
print(f(1, 2))
# 这样调用没有什么实际意义
print((lambda x,y:x+y)(1, 2))
3
3
- 匿名函数也能调用,但是调用需要注意只能使用一次,匿名函数一般不单独使用,而是与max(),min(),map(),sorted(),filter()这些内置函数一起使用
max()
- 最大值
# 找到工资最高的人
salary_dict = {'leijun':17000, 'lalala': 19000}
max_salary = max(salary_dict) # 默认是按照键取
print(max_salary)
leijun
def key(res): # res = 'leijun','lalala'
return salary_dict[res]
max_salary = max(salary_dict, key=key)
print(max_salary)
lalala
- max中封装的过程
- salary_dict变成迭代器对象salary_dict_iter
- res = salary_dict_iter.next
- 把res丢入函数func中,17000,19000
- 得到函数的返回值,把这个返回值作为判断依据
# 自己写一个max函数
def max(iterable, key=None):
salary_dict_iter = iterable.__iter__()
init_num = 0
for salary in salary_dict_iter:
func_res = key(salary)
if func_res > init_num:
init_num, func_res = func_res, init_num
return init_num
# 上面的key函数,可以写成匿名函数
salary_max = max(salary_dict, key=lambda name:salary_dict[name])
print(salary_max)
lalala
min()
- 最小值
salary_min = min(salary_dict, key= lambda name:salary_dict[name])
print(salary_min)
leijun
sorted
- 排序
# 排序
salary_dict_sorted1 = sorted(salary_dict)
print(salary_dict_sorted1)
salary_dict_sorted2= sorted(salary_dict, key = lambda name:salary_dict[name])
print(salary_dict_sorted)
['lalala', 'leijun']
['leijun', 'lalala']
map
- 映射
name_list = ['nick', 'tank', 'sean']
res = map(lambda name:f'{name} dsb', name_list)
print(list(res))
['nick dsb', 'tank dsb', 'sean dsb']
filter
- 过滤
lis = ['jason dsb', 'tank dsb', 'sean dsb','nick']
res = filter(lambda x:not x.endswith('dsb'),lis)
print(list(res))
['nick']
内置函数
1.enumerate
- 获取索引和值
lis = ['a', 'b', 'c']
for i,a in enumerate(lis):
print(i, a)
0 a
1 b
2 c
2.eval()
- 去掉字符串的引号,还原原本的数据类型
- python3的input+eval就等于python2的input
num = '[1, 2, 3]'
print(list(eval(num)))
[1, 2, 3]
3.abs()
- 绝对值
print(abs(-100))
100
4.bin()/oct()/hex()
- 进制转换
print(bin(777))
print(oct(777))
print(hex(777))
0b1100001001
0o1411
0x309
5.globals()/locals
- 获取当前的全局/局部变量
print(globals())
6.sum()
- 求和
print(sum([1, 2, 3, 4]))
10
7._import_()
- 通过字符串格式导入模块
m = __import__('time')
print(m.time())
1560153794.2662559
8.bytes()
- unicode转utf-8
print('中文'.encode('utf-8'))
print(bytes('中文', 'utf-8'))
b'\xe4\xb8\xad\xe6\x96\x87'
b'\xe4\xb8\xad\xe6\x96\x87'
9.chr()/ord()
- ascill码中的对应关系
print(chr(97))
print(ord('a'))
a
97
10.divmod()
- 求商取余
print(divmod(10, 3))
(3, 1)
11.hash()
- 可哈希不可变,不可哈希可变
- 可哈希就返回,不可哈希就报错
print(hash(10))
# print(hash([1, 22]))
10
12.all()/any()
- all全为真返回True
- any有真就返回True
print(all([0, 1, 2, 3]))
print(any([0, 1, 2, 3]))
False
True
13.dir()
- 把模块所有的方法读取出来
import time
print(dir(time))
['_STRUCT_TM_ITEMS', '__doc__', '__loader__', '__name__', '__package__', '__spec__', 'altzone', 'asctime', 'clock', 'ctime', 'daylight', 'get_clock_info', 'gmtime', 'localtime', 'mktime', 'monotonic', 'perf_counter', 'process_time', 'sleep', 'strftime', 'strptime', 'struct_time', 'time', 'timezone', 'tzname']
14.pow()
- 求幂后求余
- 可以单独求幂
- 历史遗留,可以直接用算数运算替代
print(pow(3, 2, 4))
1
15.round()
- 四舍五入
print(round(3.4))
3
16.slice
- 用切片就可以了
- 历史遗留问题
lis = ['a', 'b', 'c']
a = slice(1, 3, 1)
print(lis[a]) # lis[1:3:1]
['b', 'c']
面向过程编程
按照一定的顺序,其中每一步都可以看做是函数,当前函数的输入是上一个函数的输出,这就叫面向过程编程
优点:
- 逻辑清晰,简单明了
- 每个函数都可以独立的写出来
缺点:
- 相互之间会有一定的联系,其中一个断了,后面的也断了
- 可扩展性差
例如:ATM
day20 匿名函数,内置函数,面向过程编程的更多相关文章
- Python第七天 函数 函数参数 函数里的变量 函数返回值 多类型传值 函数递归调用 匿名函数 内置函数
Python第七天 函数 函数参数 函数里的变量 函数返回值 多类型传值 函数递归调用 匿名函数 内置函数 目录 Pycharm使用技巧(转载) Python第一天 ...
- python 匿名函数&内置函数
匿名函数:为了解决那些功能很简单的需求而设计的一句话函数怎么定义匿名函数: cal = lambda x : x*x # cal是函数名,lambda是定义匿名函数的关键字 冒号前面的额x是参数即函数 ...
- python学习day11 函数Ⅲ (内置函数与lambda表达式)
函数Ⅲ(内置函数&lambda表达式) 1.函数小高级 函数可以当做变量来使用: def func(): print(123) func_list = [func, func, func] # ...
- Python学习笔记014——迭代工具函数 内置函数enumerate()
1 描述 enumerate() 函数用于将一个可遍历的数据对象(如列表.元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在 for 循环当中. 2 语法 enumerate(sequ ...
- python 函数--内置函数
一.内置函数 内置函数是python自带的一系列常用函数. 二.python3中内置函数 内置功能 abs() delattr() hash() memoryview() set() ...
- python基础12_匿名_内置函数
一个二分查找的示例: # 二分查找 示例 data = [1, 3, 6, 7, 9, 12, 14, 16, 17, 18, 20, 21, 22, 23, 30, 32, 33, 35, 36, ...
- Python——day14 三目运算、推导式、递归、匿名、内置函数
一.三目(元)运算符 定义:就是 if...else...语法糖前提:简化if...else...结构,且两个分支有且只有一条语句注:三元运算符的结果不一定要与条件直接性关系 cmd = input ...
- python基础之递归,匿名,内置函数
递归函数: 什么是递归函数? 函数递归调用:在调用一个函数的过程中,又直接或间接地调用了该函数本身. 递归必须要有两个明确的阶段: ①递推:一层一层递归调用下去,强调:每进入下一层问题规模减少 ②回溯 ...
- Python 函数递归-三元表达式-列表生成式-字典生成式-匿名函数-内置函数
上节课复习: 1. 无参装饰器 def 装饰器名字(func): def wrapper(*args,**kwargs): res = func(*args,**kwargs) return res ...
随机推荐
- javascript (BOM DOM)
BOM对象 window对象 所有浏览器都支持 window 对象.概念上讲.一个html文档对应一个window对象.功能上讲: 控制浏览器窗口的.使用上讲: window对象不需要创建对象,直接使 ...
- win7/win10 未分配磁盘怎样创建扩展分区 也就是逻辑分区(转截)
我们有时候用windows7的磁盘管理工具对windows7系统分区管理的时候,我们可能会不小心把我们的电脑硬盘扩展分区都删除了,扩展分区变为了未分配的空间,这时候如果我们新建分区的话,建立的都是主分 ...
- win10更新后程序路径盘符变成*星号解决方法
发现这个问题是当我在命令行里输入java -version时提示 找不到*:\Program Files\Java...之类的 怎么好好的D:\Program Files\Java变成了*:\Prog ...
- PHP如何判断一个数组是一维的还是二维的
1.首先我们有一个PHP内置函数 count(); count(array,mode); array是数组,mode默认为0,1是递归的计数 <?php if(count($arr) == co ...
- 浅谈[^>]在正则中的2种用法
/^A/会匹配"An e"中的A,但是不会匹配"ab A"中的A,此时^A的意思是“匹配开头的A” /[^a-z\s]/会匹配"my 3 sister ...
- C++基础 (1) 第一天 C++相对C的改进 命名空间 引用
第一天 语法 STL 数据结构 设计模式… 2 C++语言的间接 C++ = C语言+面向对象 本贾尼 语言分类: 不关心效率 只关心架构:java/脚本语言 效率:(内存要自己管理了,操作指针)C ...
- springboot不加载bootstrap.properties文件
1.首先说一下官网对bootstrap和application两种配置文件的区别: Spring Cloud 构建于 Spring Boot 之上,在 Spring Boot 中有两种上下文,一种是 ...
- nyoj14-会场安排问题
会场安排问题 时间限制:3000 ms | 内存限制:65535 KB 难度:3 描述 学校的小礼堂每天都会有许多活动,有时间这些活动的计划时间会发生冲突,需要选择出一些活动进行举办.小刘的工作就 ...
- [luogu4107 HEOI2015] 兔子与樱花(树形dp+贪心)
传送门 Description 很久很久之前,森林里住着一群兔子.有一天,兔子们突然决定要去看樱花.兔子们所在森林里的樱花树很特殊.樱花树由n个树枝分叉点组成,编号从0到n-1,这n个分叉点由n-1个 ...
- 使用Ansible安装部署nginx+php+mysql之安装php(2)
二.使用Ansible安装php 1.php.yaml文件内容 - hosts: clong remote_user: root gather_facts: no tasks: # 安装libseli ...