fun函数python_Python函数

Python函数

一般函数定义方式

def sum(a, b): return a+b

##返回a与b的和1

2

3

一些概念与特性

嵌套

Python的函数是可以嵌套定义的

def Fun1(): print("Runing Fun1...") def Fun2(): print("Runing Fun2...") Fun2()1

2

3

4

5

但是要注意在内部定义就只能在内部使用,超出函数范围不能再调用Fun2,只能通过Fun1来调用Fun2

当尝试在外部调用Fun2时会报错

例如

def Fun1(): print("Runing Fun1...") def Fun2(): print("Runing Fun2...")

Fun2()1

2

3

4

5

此时Python解释器会报错

闭包

闭包的定义:闭包就是能够读取其他函数内部变量的函数。

由这个定义我们可以知道上例中Fun2算得上是一个闭包,不过一般不称之为闭包,因为它并未读取Fun1的内部变量。

闭包示例:

def Fun1(x): def Fun2(y): return x*y return Fun2();

##调用

Fun1(2)(3)1

2

3

4

5

6

以上可以称为闭包

解释:Fun1会返回一个函数,其实就是返回的Fun2,它需要传递一个参数,来进行后续操作,所以Fun(2)(3)>相当于是把两个参数同时传入经行乘积。

但是Fun2是不能改变Fun1里面的值

例如:

def Fun1(): x = 5 def Fun2(): x *= x return x return Fun2()1

2

3

4

5

6

上述代码会报错。

在早期,程序员们对于这种问题的解决方案是用容器类型来处理,因为容器类型不会存放在栈里,不会被屏蔽,例如上述问题可以用列表来解决。

def Fun1(): x = [5] def Fun2(): x[0] *= x[0] return x[0] return Fun2()1

2

3

4

5

6

后来在一次Python更新中解决了这个问题,使用nonlocal修饰即可

def Fun1(): nonlocal x = 5 def Fun2(): x *= x return x return Fun2()1

2

3

4

5

6

lambda表达式

概念

没什么具体定义,就相当于是一个没有名字的匿名函数,用Python实现比Java简单一点

格式

一般这样定义

lambda x, y : x + y1

最基本的使用

fun = lambda x, y : x + y

fun(2, 3)1

2

与两个过滤器一起使用

Filter

Filter的用法大概是这样

filter(fun, 可迭代序列)1

然后它就会迭代第二个参数的每一个元素,将它们放入第一个参数里面计算,得到的值是真就保留该元素,是假就将其过滤。

示例

filter(lambda x : x % 2, range(20))1

就可以立刻过滤出由0到19的所有奇数。

Map

Map的用法

map(lambda x : x % 2, range(20))1

map会把列表(可迭代序列)里面所有的值拿出来进行前面所给的函数操作,返回一个容器。

list(map(lambda x : x%2, range(20)))1

就会把所有的偶数变为0,奇数变为1。

上述的两个过滤器都不改变原来可迭代序列,而是返回一个新的容器

递归

概念

程序调用自身的编程技巧称为递归

基本的求和

def mysum(x): if x != 0: return x + mysum(x-1) else: return x

##求前x项的和1

2

3

4

5

6

斐波拉契数列

def Feb(x-1): if x== 1 or x == 0: return x else: return feb(x-1)+feb(x-2)

#求斐波拉契数列的第x项(从第一项开始!)1

2

3

4

5

6

写函数文档

当你在不知道python里面某一个函数的作用时,比如说你不知道max函数的作用,可以输入help(max)来获取相关信息,这些信息就是max函数的函数文档内容,它的编写方式如下。

def FunDoc(): '''这是FunDoc函数的函数文档''' print(FunDoc Run...)

help(FunDoc)1

2

3

4

5

运行结果如下

FunDoc()

这是FunDoc函数的函数文档1

2

函数文档相当于是属于一个函数的专有注释。

文章来源: blog.csdn.net,作者:Sout xza,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/ooblack/article/details/112439693

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/566308.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java 给对象创建实例_Java中创建(实例化)对象的五种方式

Java中创建(实例化)对象的五种方式1、用new语句创建对象,这是最常见的创建对象的方法。2、通过工厂方法返回对象,如:String str String.valueOf(23);3、运用反射手段,调用java.lang.Class或者java.lang.reflect.Constructor类的newInstance(…

java markdown转word_一键将 Word 转换为 Markdown

李缘 | | Stata 连享会 (知乎 | 简书 | 码云方法一:Writage Pandoc -- 双剑合璧!打开 Writage网页,点击Download,再点击Download Now完成下载网页下载运行安装程序,一般按照默认选项安装就好啦安装重启电脑&#xff0…

java盒图_java合成图片

package com.pbids.sanqin.util;import javax.imageio.ImageIO;import java.awt.*;import java.awt.image.BufferedImage;import java.io.File;import java.io.IOException;import java.net.URL;public class PicUtil {private Font font new Font("宋体", Font.PLA…

mysql+两天前+函数_Mysql 日期函数

一、MySQL 获得当前日期时间 函数1.获取当前日期时间(date time):now()sysdate()sysdate()和now()的区别在于sysdate() 在函数执行时动态得到值, now() 在执行开始时值就得到了,看下面的例子就明白了:mysql> select sysdate(),sleep(3),s…

java队列优先级_优先级队列-Java的PriorityQueue与最小堆有何不同?

来自Java文档表示为平衡二进制堆的优先级队列:queue [n]的两个子级是queue [2 * n 1]和queue [2 *(n 1)]。 优先级队列由比较器或元素的自然顺序进行排序。这是使用PriorityQueue的最大堆和最小堆的工作代码-class HeapDemo {private final static int HEAP_SIZE …

deepin安装java_Deepin安装Eclipse

Deepin安装Eclipse系统环境:Deepin 15.5软件环境:Eclipse 4.7官网下载最新版elipse(4.7)安装板或压缩版均启动失败(弹框报错),原因是deepin默认安装的openjdk1.9的版本,而eclipse支持的最低版本为jdk1.8版本,本机又需要jdk1.7版本的,因此需要修改eclipse启动vm参数才…

java定时任务中使用多线程_java项目中如何利用多线程实现一个定时器任务

java项目中如何利用多线程实现一个定时器任务发布时间:2020-11-10 16:04:03来源:亿速云阅读:86作者:Leah今天就跟大家聊聊有关java项目中如何利用多线程实现一个定时器任务,可能很多人都不太了解,为了让大家…

简述java在安卓开发中的应用_Java 自定义注解在安卓开发中的简单运用

定义:注解(Annotation),也叫元数据。一种代码级别的说明。它是JDK1.5及以后版本引入的一个特性,与类、接口、枚举是在同一个层次。它可以声明在包、类、接口、枚举、字段、方法、局部变量、方法参数等的前面,用来对这些元素进行说…

java数组个数无限_基于Java代码实现数字在数组中出现次数超过一半

下文通过几种方法给大家介绍java数组数字出现次数,具体内容如下所示:方法一:数组排序,然后中间值肯定是要查找的值。 排序最小的时间复杂度(快速排序)O(NlogN),加上遍历。方法二:使用散列表的方式&#xff…

java合并sheet行_java poi Excel循环合并行

//Java poi 实现循环合并行,还是第一次遇到这种问题//在网上查了很多资料,都不是自己想要的//以下为自己研究后,写的一点东西,给大家分享,希望对大家能有思路上的启发,也希望大家能提出宝贵意见&#xff0c…

java类中自定义函数的调用_关于方法:自定义类中对函数的未解析引用

我无法解决看似微不足道的问题。我的问题可能是缺乏对Kotlin语言的经验(和理解)。不过,我将需要帮助。我做了一个自定义类,其中包含一个自定义函数。看起来很简单,但是当我尝试使用此功能时,我一直收到"未解决的引用"错…

java正则表达式 分词_[Java]使用正则表达式实现分词

手工分词稍嫌麻烦,不好维护,而利用正则表达式就利索多了。Java提供了java.util.regex.Matcher,java.util.regex.Pattern类来帮助我们实现此功能。例一:以下程序将把"This is a farm that that raises dairy cattle."中的…

as和java什么关系_深入理解happens-before和as-if-serial语义

概述本文大部分整理自《Java并发编程的艺术》,温故而知新,加深对基础的理解程度。指令序列的重排序我们在编写代码的时候,通常自上而下编写,那么希望执行的顺序,理论上也是逐步串行执行,但是为了提高性能&a…

java产生字符函数_java生成字符串md5函数类(javaSE)

//实现生成MD5值import java.io.BufferedInputStream;import java.io.ByteArrayInputStream;import java.io.ByteArrayOutputStream;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.IOException;import java.securi…

java atomiclong 使用_Java并发AtomicLongArray类

全屏java.util.concurrent.atomic.AtomicLongArray类提供了可以原子读取和写入的底层long类型数组的操作,并且还包含高级原子操作。 AtomicLongArray支持对基础long类型数组变量的原子操作。 它具有获取和设置方法,如在变量上的读取和写入。 也就是说&am…

memcached client for java api,Memcached Client Forjava API

java_memcached-release 关键类及方法整理说明如下。 SockIOPool 这个类用来创建管理客户端和服务器通讯连接池,客户端主要的工作包括数据通讯、服务器定位、hash 码生成等都是由这个类完成的。 1.public static SockIOPool getInstance() 获得连接池的单态方…

对于JAVA的总结800字,java试用期转正工作总结500字

【www.gz85.com - 试用期工作总结500字】java试用期转正工作总结一年的时间,每当自己在总结它的时候,感觉是那么的短暂—弹指一挥间.而也就是在这一挥间,承载着太多太多,有收获与成就,有失败与不足.回头看看2012年的足迹,伴随着自己一年的是学习与坚持.2016年伊始是通过分销资源…

rtrim php,php rtrim() 格式化中文问题

先看以下代码var_dump(rtrim("互联网产品、", "、"));我们以为会得到结果 "互联网产品", 但实际上获得的是 ""互联网产��"为什么呢, 其实这是编码引起的问题.rtrim()这个函数在处理字符时是按照ascii编码来…

java gbk汉字 10进制,用java程序将GBK字符转成UTF-8编码格式

UTF-8 采用变长度字节来表示字符,理论上最多可以到 6 个字节长度(一个字符六个字节)。UTF-8 编码兼容了 ASC II(0-127), 也就是说 UTF-8 对于 ASC II 字符的编码是和 ASC II 一样的。对于超过一个字节长度的字符,才用以下编码规范&#xff1a…

我的世界java版刷雪球机,我的世界手机版怎么刷雪球 无限刷雪球机

随着全球变暖,厄尔尼诺现象加剧,一些生活在亚热带的孩子越来越感受不到下雪的喜悦,雪场的票子也是难求!不过不要着急,Minecraft给你模拟了一个生存的环境,在这里,你可以和好友联机打雪仗&#x…