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

fun函数python_Python函数相关推荐

  1. 闭包函数 python_python 函数,闭包

    假如有一个函数,实现返回两个数中的较大值: def my_max(x,y): m = x if x>y else y return m bigger = my_max(10,20) print( ...

  2. class函数 python_python函数之classmethod()

    classmethod(function) 中文说明: classmethod是用来指定一个类的方法为类方法,没有此参数指定的类的方法为实例方法,使用方法如下:class C: @classmetho ...

  3. 分割函数python_python strip() 函数和 split() 函数的详解及实例

    一直以来都分不清楚strip和split的功能,实际上strip是删除的意思:而split则是分割的意思.因此也表示了这两个功能是完全不一样的,strip可以删除字符串的某些字符,而split则是根据 ...

  4. 理解函数的相关概念python_Python函数的概念和使用

    函数 为了便于程序的维护和更好的实现模块化,好的程序都会分解为很多函数. 可以这么说,对于任何的编程语言,函数都是一个非常重要的概念. python 不仅简化了函数的定义过程,而且还大量借鉴了其他函数 ...

  5. 文件函数python_Python 基础之文件 函数

    今天回顾一下之前学的文件操作相关知识点,对于文件的操作,主要有一下几部分构成: 一.文件的基础知识 1.文件操作的基本流程 文件操作其实可以分成三大部分: 1.打开文件,获取文件句柄并赋予一个变量 2 ...

  6. def func python_python函数之基础

    一: 函数的定义与调用 1.1 :函数的定义 def 关键字必需写 函数名必需是字母,数字,下划线组合,并且不能以数字开头 函数名后面要加括号然后":" 为函数写注释是一个好习惯 ...

  7. update函数python_python update函数

    在前一篇文章  python ChainMap中我们介绍了关于python内置函数 ChainMap的使用,ChainMap函数和update函数类似,都是对字典操作,也是将多个字典合并,那么问题来了 ...

  8. Java箭头函数,lambda函数

    Java箭头函数,lambda函数 lambda表达式实质就是一种语法糖,(建议尽量不要使用lambda表达式,代码太简洁,难懂,难以调试) lambda表达式的简单例子: 不需要参数,返回5 ()- ...

  9. C++ 笔记(13)— 函数(函数声明、函数定义、函数调用[传值、指针、引用]、函数参数默认值、函数重载)

    每个 C++ 程序都至少有一个函数,即主函数 main() ,所有简单的程序都可以定义其他额外的函数. 1. 函数声明 函数声明告诉编译器函数的名称.返回类型和参数.函数声明包括以下几个部分: ret ...

最新文章

  1. Handler的postDelayed()关闭的方法
  2. redis 什么是冷数据_阿里Java三面凉凉:微服务,Redis,JVM一个都搞不懂
  3. 怎么用excel表做网页搜索工具_你敢相信?Excel居然可以做搜索引擎
  4. ORA-01075: you are currently logged on
  5. [HTTP权威指南]2.HTTP连接管理
  6. uv422转换为yuv420_详解 YUV 格式(I420/YUV420/NV12/NV12/YUV422)
  7. Linux设置串口波特率等参数
  8. 【目标检测】CenterNet2代码解读
  9. 机器学习的方法排名靠前的十种方法介绍
  10. Web应用防火墙是什么?有哪些功能?
  11. java中pack什么意思_java – .pack()做什么?
  12. 全面mysql初始化TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defau
  13. Ubuntu 18下OpenCV3.4的安装与使用示例
  14. restframework的 createmixin 的 serializer.save() 问题
  15. 【Proteus仿真】【51单片机】简易信号发生器设计
  16. PHP实现简单的万年历
  17. 程序员用 Python 分析中国演员排名,票房最高的是意料之中的他
  18. 《区块链技术与应用》北大肖臻老师——课程笔记【1-3】
  19. HTML5 文件上传的2种方式
  20. OSChina 周二乱弹 —— 理解超算排名这个事,竟然超出了很多人的智商

热门文章

  1. 新版微软Edge浏览器:支持安装Chrome扩展
  2. 让IE浏览器提示下载或直接打开word文档
  3. tomcat7 加载el表达式 报错 使用tomcat8得以解决
  4. RedisTemplate常用集合使用说明-opsForList(三)
  5. spring的@ControllerAdvice注解
  6. Windows更新右下角出现 天气温度等提示,如何取消
  7. java类的定义的实例_《Java基础知识》Java类的定义及其实例化
  8. Git初学札记(零)————EGIT完成Eclipse到GitHub一条龙
  9. c++ mysql 配置文件_C++操作数据库写入到json配置文件中
  10. JAVA shell export_Java 远程调用Shell