python学习7—函数定义、参数、递归、作用域、匿名函数以及函数式编程
1. 函数定义
def test(x)
# discription
y = 2 * x
return y
返回一个值,则返回原本的object;
过程与函数的区别,过程无return返回值,但是python会自动赋予一个None返回值。
def test(x)
# discription
y = 2 * x
print(y)
若返回多个值,python会将多个元素包装成一个元组,并返回。即实际上仍然只返回一个值。
函数只要碰到第一个return就会结束调用。
2. 传参数的方法
位置参数,一一对应
关键字参数,不须一一对应
test(x=5)
混用位置参数与关键字参数时,位置参数必须位于关键字参数前面,且同一个形参不能传多个值。
3. 参数组
可变长短的参数,*args,**kwargs
*的作用就是for循环取参数
def test(x,*args)
print(x)
print(args[1]) test(1,2,3,4,5,6)
test(1,[2,3,4,5]) #传入整个列表作为一个整体
test(1,*[2,3,4,5]) #传入列表中的单个元素
**kwargs处理键值对,字典
def test(x,**kwargs)
print(x)
print(kwargs) test(1,y=2,z=3)
连起来用,*args必须位于**kwargs前面
def test(x,*args,**kwargs)
print(x)
print(args)
print(kwargs) test(1,2,3,5,66,y=2,z=3)
test(1,*[1,1,2,3],**{'y':1})
4. 默认参数
如果定义函数时指定了默认参数,则在调用时可指定该参数,也可忽略该参数。
def test(x,y,z=2):
print(x,y,z) test(1,2) test(1,2,5)
5. 递归函数
递归类似函数递推公式:
# recursion
def calc(n):
print(n)
if int(n/2) == 0:
return n
else:
return calc(int(n/2)) calc(10)
函数递归调用过程如下图所示,递归函数重复调用自身,相当于重复调用子函数,当最终嗲用结束时,最内层的子函数返回值逐层返回给各个子函数
6. 函数作用域
一个函数在调用时,不管在哪里调用,都只与该函数在定义时有关系。嵌套定义的函数必须从外层到内层逐层调用,不可只运行嵌套定义的子函数。
def foo():
name = 'abc'
def bar():
name = 'xyz'
print(name)
def tt():
print(name)
return tt
return bar print(foo()()())
7. 匿名函数
匿名函数使用lambda关键词定义,需将lambda赋值给一个变量才能调用该匿名函数,lambda会自动将冒号后面的内容return返回给函数句柄。
# the next two functions are of the same function
# first
def calc(x):
return x+1
# second
func = lambda x:x+1
# lambda(10) is wrong
print(func(10))
- lambda匿名函数的定义相当于一个值,如果不赋值给一个变量,则此匿名函数会在定义后在内存里立即被释放
- lambda函数不能返回复杂逻辑,只能返回一行,一个确定的最终的结果
- 若需要返回多个值,则需要手动组成一个元组,这里与用def定义的函数不同
lambda x,y,z:(x+1,y+1,z+1)
8. 编程风格(方法论)
- 面向过程编程
- 函数式编程
- 不用变量保存状态,不修改变量
- 函数即变量地址
- 高阶函数:函数接收的参数是函数名,或函数的返回值中包含函数
- 尾调用优化:函数在最后一步调用另一个函数
- 面向对象编程
python学习7—函数定义、参数、递归、作用域、匿名函数以及函数式编程的更多相关文章
-
python开发基础04-函数、递归、匿名函数、高阶函数、装饰器
匿名函数 lamba lambda x,y,z=1:x+y+z 匿名就是没有名字 def func(x,y,z=1): return x+y+z 匿名 lambda x,y,z=1:x+y+z #与函 ...
-
Python第七天 函数 函数参数 函数里的变量 函数返回值 多类型传值 函数递归调用 匿名函数 内置函数
Python第七天 函数 函数参数 函数里的变量 函数返回值 多类型传值 函数递归调用 匿名函数 内置函数 目录 Pycharm使用技巧(转载) Python第一天 ...
-
python 函数的动态参数 命名空间,作用域以及函数嵌套,global和nonlocal (重点)
*** 坚持坚持,即使你不太强*** 1.函数的动态传参 2.函数的命名空间及作用域 3.函数嵌套 4.global和nonlocal关键字 一.函数的动态传参 1. *args: 位置参数动态传参, ...
-
python学习笔记5-自定义函数
1 自定义函数 (1)函数代码块以def关键字开头,然后函数标识符名称和圆括号 (2)任何传入参数和自变量必须放在圆括号中间.圆括号之间可以用于定义参数 (3)函数的第一行语句可以选择性的使用文 ...
-
python全栈开发-Day12 三元表达式、函数递归、匿名函数、内置函数
一. 三元表达式 一 .三元表达式 仅应用于: 1.条件成立返回,一个值 2.条件不成立返回 ,一个值 def max2(x,y): #普通函数定义 if x > y: return x els ...
-
python之三元表达式、列表推导、生成器表达式、递归、匿名函数、内置函数
目录 一 三元表达式 二 列表推到 三 生成器表达式 四 递归 五 匿名函数 六 内置函数 一.三元表达式 def max(x,y): return x if x>y else y print( ...
-
python之旅:三元表达式、列表推导式、生成器表达式、函数递归、匿名函数、内置函数
三元表达式 #以下是比较大小,并返回值 def max2(x,y): if x > y: return x else: return y res=max2(10,11) print(res) # ...
-
day03 函数基本语法及特性 2. 参数与局部变量 3. 返回值 嵌套函数 4.递归 5.匿名函数 6.函数式编程介绍 7.高阶函数 8.内置函数
本节内容 1. 函数基本语法及特性 2. 参数与局部变量 3. 返回值 嵌套函数 4.递归 5.匿名函数 6.函数式编程介绍 7.高阶函数 8.内置函数 温故知新 1. 集合 主要作用: 去重 关系测 ...
-
python之路day10-命名空间和作用域、函数嵌套,作用域链、闭包
楔子 假如有一个函数,实现返回两个数中的较大值: def my_max(x,y): m = x if x>y else y return mbigger = my_max(10,20)print ...
-
Python 对象(type/object/class) 作用域 一等函数 (慕课--Python高级,IO并发 第二章)
在python中一共有两种作用域:全局作用域和函数作用域全局作用域:在全局都有效,全局作用域在程序执行时创建,在程序执行结束时销毁:所有函数以外的区域都是全局作用域:在全局作用域中定义的变量,都属于全 ...
随机推荐
-
转:webRTC的前世今生
https://blog.coding.net/blog/getting-started-with-webrtc
-
MongoDB Aggregate Methods(2) MonoDB 的 3 种聚合函数
aggregate(pipeline,options) 指定 group 的 keys, 通过操作符 $push/$addToSet/$sum 等实现简单的 reduce, 不支持函数/自定义变量 g ...
-
网络编程之ping
#include <sys/types.h>#include <netinet/ip.h>#include <netdb.h>#include<arpa/in ...
-
我所理解的设计模式(C++实现)——备忘录模式(Memento Pattern)
概述: 我们玩单机游戏的时候总会遇到老婆大人的各位事情,一会去买瓶醋了,一会去打个酱油了,会耽误我们玩游戏的进程,但是此时我们能有“保存游戏”这个宝贝,我们的主基地不会在我们打酱油的时候被对手拆掉. ...
-
backBarButtonItem无效
控制器A push-> 控制器B, 我设置了B的backBarButtonItem为“返回”,发现无效... 原因: 应该在控制器A中设置backBarButtonItem,这样在push B之 ...
-
StartUML 各种类图的例子
1.UML分为: 1)静态建模:系统基础和系统固定框架结构,这些图形往往是“静态”的. 类图(Class Diagram):常用来分析业务概念 用例图(Use Case Diagram):常用 对象图 ...
-
IMU 标定 | 工业界和学术界有什么不同?
点击"计算机视觉life"关注,置顶更快接收消息! 由于格式问题最好在公众号上观看<IMU 标定-工业界和学术界有什么不同?> 本文主要介绍了IMU基本结构原理和误差的 ...
-
从Vue文件到Html文件
如下图,通过webpack打包工具,将一个Vue文件生成html,css,js文件.其中js对应的是new Vue({})
-
django的流程分析
首先实现一个前端输入网址,后端返回不同的html文件的步骤 一.配置django 1.创建工程 2.创建app 二.配置setting 1.配置templates路径 2.注释跨站请求 三.配置pro ...
-
边框圆角Css
.box{ background:grey; //灰色背景 height:50px; //高500像素 width:200px; //宽200像素 border-top-left-radius:15p ...