python函数和函数式编程
——以下所有内容均来自于蓝鲸运维SaaS开发实战公开课的ppt,我对其进行了整理做了笔记,便于以后查看学习。
函数
声明函数:
def hello():print("hello function")
调用函数:
使用()进行调用hello()
,函数也是对象。
可以把函数名赋值给变量。
参数:
- 必备参数
定义:
def func(p):print("p is {}".format(p))
func(1)
func(p=1)
#结果:
p is 1
p is 1
- 默认参数
def func(a,b=1,c=2):print("a={},b={},c={}".format(a,b,c))func(1,1,1)
func(1,c=1)
func(1)
#结果:
a=1,b=1,c=1
a=1,b=1,c=1
a=1,b=1,c=2
- 可变参数(覆盖所有参数调用)
def func(a,*args,**kwargs):print("a={},args={},kwarges={}".format(a,args,kwargs))func(1)
func(1,c=1)
func(1,1,1)
func(1,2,3,x=8)
#结果
a=1,args=(),kwargs={}
a=1,args=(),kwargs={'c':1}
a=1,args=(1,1),kwargs={}
a=1,args=(2,3),kwargs={'x':8}
- 可变参数调用
from datetime import datetimedatetime(year=1997,month=7,day=1)
#结果:
datetime.datetime(1997,7,1,0,0)args=(0,10,2)
list(range(*args))
#结果:
[0,2,4,6,8]kwargs={"year":1997,"month":7,"day":1}
datetime(**kwargs)
#结果:
datetime.datetime(1997,7,1,0,0)
Built-in函数
作用域:
LEGB解析顺序:Local,Enclosing,Global,Built-in
global关键字
explain_scope.py
global关键字会把我们想要变成全局变量的变量变成全局变量。
当使用global关键字后:
全局变量大写首字母,局部变量全小写
不要使用Built-in和关键字作变量/函数名
函数式编程
函数式编程:
拉曼达表达式:
可以参考一下我写的另一篇博客:
https://blog.csdn.net/weixin_43614026/article/details/108422983
内嵌函数/内部函数:
首先举一个函数嵌套最简单易懂的例子:
使用时需要注意,只有在fun1作用域中才能调用fun2,出来fun1作用域就不能再调用fun2. 使用闭包时也需注意该问题。
闭包:
对于闭包,举一个简单例子,funy位于funx的作用域内,并且funy使用了funx的参数x,funx返回的返回值是funy这个函数对象。(python中一切皆对象)
然后对funx进行调用,传入参数5,现在实际上 i = 5 * y ,此时i是一个函数对象,再调用i函数其参数为6,可得到计算结果是5*6=30。
用如下方式也可以进行调用。
接下来,举一个错误的例子,和解决办法:
报错信息是局部变量x没有被定义,x在fun1被赋值为5,但是在fun2内成为了fun2作用域的局部变量而且没有赋值,所以报错。
变量一般会存储在栈内,像元组列表等容器类型会存储在堆内,不会产生这样的错误。(这里我也有些不清楚,大家可以查查网上的资料)
解决方法一:
解决方法二: 使用 nonlocal 关键字,作用与 global 关键字类似。可以把局部变量变成不是局部变量。
python函数和函数式编程相关推荐
- python函数与函数式编程
在理解函数式编程之前,我还是对函数的调用,参数传递以及函数的嵌套调用一头雾水,还是花了点时间整理了写思绪,以便我后面对装饰器复杂的参数传递和函数的调用的理解. 函数的定义 def 函数名(): 代码块 ...
- python 函数对象(函数式编程 lambda、map、filter、reduce)、闭包(closure)
1.函数对象 作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 秉承着一切皆对象的理念,我们再次回头来看函数(function).函 ...
- 过程或函数的副作用是_Python函数和函数式编程(两万字长文警告!一文彻底搞定函数,建议收藏!)...
Python函数和函数式编程 函数是可重用的程序代码段,在Python中有常用的内置函数,例如len().sum()等. 在Pyhon模块和程序中也可以自定义函数.使用函数可以提高编程效率. 1.函数 ...
- Python中的匿名函数和函数式编程
Python中的匿名函数和函数式编程 文章目录 Python中的匿名函数和函数式编程 一.匿名函数 匿名函数的格式: 二.函数式编程 map() filter() reduce() 区别 三.'三目运 ...
- Python进阶:函数式编程(高阶函数,map,reduce,filter,sorted,返回函数,匿名函数,偏函数)...啊啊啊...
函数式编程 函数是Python内建支持的一种封装,我们通过把大段代码拆成函数,通过一层一层的函数调用,就可以把复杂任务分解成简单的任务,这种分解可以称之为面向过程的程序设计.函数就是面向过程的程序设计 ...
- python采用函数式_python -- 函数以及函数式编程
函数以及函数式编程 到目前为止,我们的Python 代码已经实现了小的分块.它们都适合处理微小任务, 但是我们想复用这些代码,所以需要把大型代码织成可管理的代码段.代码复用的第一步是 使用函数,它是命 ...
- 跟着ALEX 学python day3集合 文件操作 函数和函数式编程
声明 : 文档内容学习于 http://www.cnblogs.com/xiaozhiqi/ 一. 集合 集合是一个无序的,不重复的数据组合,主要作用如下 1.去重 把一个列表变成集合 ,就自动去重 ...
- Python 进阶_函数式编程
目录 目录 函数式编程 Python 函数式编程的特点 高阶函数 匿名函数 lambda 函数式编程相关的内置函数 filter 序列对象过滤器 map reduce 折叠 自定义的排序函数 最后 函 ...
- python语言支持函数式编程_python是函数式语言么
函数式编程:functional,是一种编程范式. 函数式编程的特点:1. 把计算视为函数而非指令 2. 纯函数式编程:不需要变量,没有副作用,测试简单 3. 支持高阶函数,代码简洁 Python支持 ...
最新文章
- PHP获取IP地址以及IP地址所在位置
- emca 更改监听端口
- hdu 1753大小数相加
- DllRegisterServer的调用失败
- Python动态绑定属性和方法
- VTK:图表之GraphToPolyData
- 35行代码利用python生成字符画,非常适合初学者练习,附源码!
- Netty:Netty不断打开文件的BUG
- 互联网行业哪个职位比较有前途?
- airpin linux电脑,AirPinPcSender
- chromium下载编译过程
- LinkedBlockingQueue多线程安全的保障 —————— 开开开山怪
- 开源TMS团队协作web系统
- spring cloud 资源服务器授权配置
- Google退出中国了
- php artisan command,artisan command 小技巧
- Python 教程之 Pandas(14)—— 使用 Pandas 进行数据分析
- 字体生成GAN(GlyphGAN)学习笔记
- Google提出的以用户为中心的度量体系“HEART框架
- appium测试Cannot start the ‘XXX‘ application报错,无法打开app
热门文章
- JavaScript开发区块链只需200行代码 1
- 红帽公布2017财年第一季度财报
- Quartus II 与ModelSim-SE联合仿真Shift_ram
- Anaconda 安装 ml_metrics package
- 通过Repository Manager 1.3来管理戴尔驱动程序更新
- 寻java、.net、或C#兼职程序开发人员(上海)
- TiDB数据库备份恢复与数据迁移
- TypeScript 元组(Tuple)
- 18医科大学计算机基础,18春中国医科大学《计算机基础与应用 》在线作业100分答案...
- nvprof 使用记录; 以及使用 nvprof 查看tensorflow-gpu 核函数运行记录