函数
时间:2019-11-19
本文章向大家介绍函数,主要包括函数使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
目录
一、匿名函数
匿名函数lambda:没有名字的函数
特点:
临时存在,用完就销毁
匿名函数通常不会单独使用,配合内置函数一起使用
lambda x,y : x+y
解释:左边的相当于函数的形参,右边相当于函数的返回值
1.求和普通方法
def my_sum(x, y):
return print(x+y)
my_sum(1, 2)
2.匿名函数配合内置求和:
res = (lambda x, y: x+y)(11, 20)
print(res)
二:比较薪资,返回人名:
k = {'jeff': 8000,
'nick': 1000,
'tank': 3000,
'mary': 10000,
def index(name):
return k[name]
print(max(k, key=index)) # 函数返回什么比较什么
# max内置函数,第一步:拿到字典key(jeff)
第二步,把key传给index函数
第三步,执行index(jeff),返回字典k[jeff],5000
第四步,依次拿到5000,1000,3000,10000,进行比较
第五步,返回最大值对应的人名
"""
2.把index写成匿名函数:
print(max(k, key=lambda name: k[name]))
print(min(k, key=lambda name: k[name]))
三、补充ascll码表:
"""
A-Z 65-90
a-z 97-122
"""
print(chr(122)) #查看ascll码对应的值
二、函数的递归
1.特点
1.函数在调用阶段直接或间接的又调用自己
2.递归函数不需要考虑循环的次数,只需把握结束的条件
# 查看递归深度:默认1000
import sys
print(sys.getrecursionlimit()) # 不是很精确
1.递归死循环:
def index():
print("这是第一个函数")
login()
def login():
print("这是第二个函数")
index()
index()
2.函数的递归分为两个阶段:
1.回溯:重复的过程,一层层降低难度
2.递推:一层层往回推导的过程
要求:
第一个人18岁,第二个人比第一个人大两岁,第三个人比第二个人大两岁,第四个人比第三个人大两岁。。。
age(5)=age(4)+2
age(4)=age(3)+2
age(3)=age(2)+2
age(2)=age(1)+2
age(1)=18
def age(n):
if n == 1:
return 18
return age(n-1) + 2
res = age(5) # 第五个人的年龄
print(res)
3.递归使用的例子:依次打印列表中的数据
复杂度降低:列表越来越短
递归函数:
l = [1 ,[2 ,[3 ,[4 ,]]]]
def main(l):
for i in l:
if type(i )is int: # 判断是否为整型
print(i)
else:
main(i)
main(l)
三、局部全局修改
global:局部修改全局 ,逗号隔开修改全局
nonlocal:局部修改局部,逗号隔开修改全局
1.局部修改全局
关键字 global 申明
# global 局部修改全局
x = 1
def func():
global x # 修改全局变量
x = 2
func()
print(x)
2.局部修改局部
关键字 nonlocal 申明
# nonlocal 局部修改局部
def func():
x = 1
def func1():
nonlocal x # 声明修改局部
x = 2
func1()
print(x)
func()
四、常用内置函数
1.map 映射 基与for循环
k = [1, 2, 3, 4, 5, 6]
print(list(map(lambda x: x + 1, k))) # map 基与for循环 每一个数+1
2.zip拉链 基与for循环
- 取最短的拉
k1 = [1, 2, 3, 4, 5]
k2 = ['jeff', 'tank', 'jason']
k3 = ['a', 'b', 'c']
print(list(zip(k1, k2, k3)))
# 结果:[(1, 'jeff', 'a'), (2, 'tank', 'b'), (3, 'jason', 'c')]
3.filter 过滤 基与for循环
k = [1, 2, 3, 4, 5]
print(list(filter(lambda x: x != 3, k))) # 后面可以加条件
4.sorted 排序
k = ['jeff', 'tank', 'jason']
k.sort() # 升序
k.sort(reverse=True) # 降序
print(k)
print(sorted(k)) # 升序
print(sorted(k, reverse=True)) # 降序
k.reverse() #逆序
5.reduce 额外的
from functools import reduce
from functools import reduce
k = [1, 2, 3]
print(reduce(lambda x, y: x+y, k, 10)) # 1+2+3+10 ,10是额外的
# 结果: 16
# 当初始值不存在的时候,按照下面的规律
# 第一次先获取两个元素 相加
# 之后每次获取一个与上一次相加的结果再相加
原文地址:https://www.cnblogs.com/WQ577098649/p/11887409.html
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 再见,Navicat!同事安利的这个IDEA的兄弟,真香!
- 【一起学系列】之单例模式:只推荐三种~
- 【一起学系列】之命令模式:封装一个简单Jedis?
- 轻松学Pytorch-实现自定义对象检测器
- Elasticsearch 升级 7.x 版本后,我感觉掉坑里了!
- 【一起学系列】之适配器模式:还有外观模式呢
- 【翻译】200行代码讲透RUST FUTURES (5)
- Unable to preventDefault inside passive event listener
- js 停止事件冒泡 阻止浏览器的默认行为(阻止a标签跳转 )
- EmitMapper的使用小结
- js .map方法
- 【一起学系列】之模板方法:写SSO我只要5分钟
- ConcurrentDictionary线程不安全么,你难道没疑惑,你难道弄懂了么?
- 【一起学系列】之迭代器&组合:虽然有点用不上啦
- 移动端touch事件影响click事件以及在touchmove添加preventDefault导致页面无法滚动的解决方法