小工具      在线工具  汉语词典  css  js  c++  java

python高级函数

Python,python,list 额外说明

收录于:157天前

高阶函数

函数作为参数

# 对于函数function,需要用()才是函数调用,单个函数名为函数本身

# 函数没有像Java的反射的概念,function为函数本身,function(参数)为函数调用
def func(x,a):
    return x(a)
func(abs,-12)
12
# 能够获取函数本身后就可以将函数作为变量进行传递

def add(*args):
    return sum(args)

def math(function,*args):
    return function(*args)
math(add,1,2,3)
6

地图()函数

# Python内建了map()和reduce()函数

# map()函数接收两个参数,一个是函数,一个是Iterable,map将传入的函数依次作用到序列的每个元素,并把结果作为新的Iterator返回。

def add(a):
    return a**2

map_add=map(add,[1,2,3,4])
for i in map_add:
    print(i)
1
4
9
16

减少()函数

# reduce()函数把一个函数作用在一个序列上

def add1(x,y):
    return x+y
reduce_add=reduce(add,[1,2,3,4])
print(reduce_add)
---------------------------------------------------------------------------

NameError                                 Traceback (most recent call last)

~\AppData\Local\Temp/ipykernel_12684/1983324346.py in <module>
      3 def add1(x,y):
      4     return x+y
----> 5 reduce_add=reduce(add1,[1,2,3,4])
      6 print(reduce_add)


NameError: name 'reduce' is not defined
from functools import reduce
def add1(x,y):
    return x+y
reduce_add=reduce(add1,[1,2,3,4])
print(reduce_add)
10

过滤器()函数

# filter()也接收一个函数和一个序列。和map()不同的是,filter()把传入的函数依次作用于每个元素,然后根据返回值是True还是False决定保留还是丢弃该元素。

def select(a):
    return a%2==0
list_one=[1,2,3,4,5,6,7,8,9,10]
list_two=filter(select,list_one)
for i in list_two:
    print(i,end=" ")
2 4 6 8 10 

排序()函数

# sorted()函数也是一个高阶函数,它还可以接收一个key函数来实现自定义的排序.

list_three=sorted([9,8,7,6,5])
for i in list_three:
    print(i,end=" ")
5 6 7 8 9 

函数作为返回值

# 高阶函数除了可以接受函数作为参数外,还可以把函数作为结果值返回。
def add(*args):
    print(sum(args))
    
def delete(x,y):
    print(x-y)

def math(function_name):
    if function_name==add:
        return add
    elif function_name==delete:
        return delete
    else:
        return "None Function Nmae"

math(add)(1,2,3)
6

匿名函数 lambda

# 传入函数时,有些时候,不需要显式地定义函数,直接传入匿名函数更方便。

# 匿名函数lambda x: x * x,y实际上就是: 关键字lambda表示匿名函数,冒号前面的x表示函数参数,后面为逻辑,y为实参

# 匿名只能是一个表达式,返回值就是该表达式的结果。也可以作复制给变量

x=lambda x,y:x+y
print(x)

y=lambda x: sum(x) ,[1,2,3]
print(y)

print(lambda x:x**2,[2,4,8])
<function <lambda> at 0x0000020362785F70>
(<function <lambda> at 0x00000203626AD820>, [1, 2, 3])
<function <lambda> at 0x0000020362785550> [2, 4, 8]

装饰者

# 代码运行期间动态增加功能的方式,称之为“装饰器”(Decorator)
@log
def now():
    print('2015-3-25')

    
# @log就是一个装饰器
. . .

相关推荐

额外说明

性能测试、python内存分析工具-memray

Memray是一个由彭博社开发的、开源内存剖析器;开源一个多月,已经收获了超8.4k的star,是名副其实的明星项目。今天我们就给大家来推荐这款python内存分析神器。 Memray可以跟踪python代码、本机扩展模块和python解释器本身中内存分

额外说明

web前端面试高频考点——性能优化篇(手写防抖、手写节流、XXS攻击、XSRF攻击)

系列文章目录 JavaScript 知识梳理,收录了web前端面试 95%以上 的高频考点,满满的干货。给你做一个高效的知识梳理,为你的面试保驾护航! 内容 参考链接 HTML & CSS 篇 HTML & CSS 篇 JavaScript 篇(一) J

额外说明

VC++实现会议中阻止屏保、阻止系统自动关闭屏幕、阻止系统待机(附源码)

目录 1、概述 2、设置屏幕保护程序,修改自动关闭显示器和待机的时间 2.1、设置屏保程序

额外说明

第二章节 spring IoC 的工作原理

《Spring》篇章整体栏目 ————————————————————————————— 【第一章】spring 概念与体系结构 【第二章】spring IoC 的工作原理 【第三章】spring IOC与Bean环境搭建与应用 【第四章】spring

额外说明

Cannot read property ‘isFile‘ of undefined 报错解决

今天在启动项目时项目起不来,一老报错,经过翻译研究,来上解决方案 执行vue项目npm run dev的时候filemanager-webpack-plugin报错TypeError: Cannot read property ‘isFile‘ of u

额外说明

【GWT系列】实现远程过程调用

  在本节中,使用GWT调用服务器端的方法,返回股票数据。从客户端调用的服务端的代码,也被称作一个服务。 接下来,会介绍: 1. 在服务器上创建一个服务 2. 从客户端调用这个服务 3. 序列化数据对象 4. 处理异常: 检查和异常处理 更多关于在GWT

额外说明

Unable to import maven project: See logs for details错误的多种解决方法

文章目录 1. 复现错误 2. 分析错误 3. 解决问题 3.1 解决方法一 3.2 解决方法二 4. 补充说明 1. 复现错误 今天从gitlab上下载完项目后,无法启动项目,留意到右下角的Evnet Log,点开如下图所示: 即Unable to i

额外说明

Dynamics 365应用程序开发 - 11. 通过学习路径培训用户

Dynamics 365学习路径是在Dynamics 365 9.0版本中引入的。此功能允许您在用户打开页面时在Dynamics 365中添加可自定义的帮助。它还允许用户遵循帮助并同时工作,提供了Dynamics365的适应性和轻松学习。 在本章中,将涵

额外说明

Asp.net MVC 中使用Repeater的6种解决方案

请先阅读这里: ASP.NET Framework Features That Are Compatible with MVC 它可能出现的Web窗体和MVC有很大的不同技术。但是,这两种技术是建立在ASP.NET的框架。因此,大多数ASP.NET框架的

额外说明

iphone 图标切图_如何要求读者在iPhone上添加WordPress博客图标

iphone 图标剪纸 最近,我们的一位用户询问我们如何添加一个小通知,要求他们的 iPhone 用户将 ifon 块添加到他们的主屏幕。 TechCrunch 等热门网站大量使用此功能。如果您的 WordPress 博客有漂亮的响应式设计,并且拥有大量

ads via 小工具