lambda不是python的保留字_python-nonlocal关键字的使用,lambda表达式(学习到function到变...
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
Python中的nonlocal关键字的使用,lambda表达式,什么是递归,字符串操作方法
总的来说:
golbal 全局变量 nonlocal 代表(翻译 不是本地) 我不是局部 我不是全局
lambda 就是一个表达式
匿名函数
python 使用 lambda 来创建匿名函数。
所谓匿名,意即不再使用 def 语句这样标准的形式定义一个函数。
lambda 只是一个表达式,函数体比 def 简单很多。
lambda的主体是一个表达式,而不是一个代码块。仅仅能在lambda表达式中封装有限的逻辑进去。
lambda 函数拥有自己的命名空间,且不能访问自己参数列表之外或全局命名空间里的参数。
虽然lambda函数看起来只能写一行,却不等同于C或C++的内联函数,后者的目的是调用小函数时不占用栈内存从而增加运行效率。
语法
lambda 函数的语法只包含一个语句,如下:
lambda [arg1 [,arg2,.....argn]]:expression
如下实例:
实例(Python 3.0+)#!/usr/bin/python3 # 可写函数说明 sum = lambda arg1, arg2: arg1 + arg2 # 调用sum函数 print ("相加后的值为 : ", sum( 10, 20 )) print ("相加后的值为 : ", sum( 20, 20 ))
以上实例输出结果:
相加后的值为 : 30相加后的值为 : 40
全局变量和局部变量
定义在函数内部的变量拥有一个局部作用域,定义在函数外的拥有全局作用域。
局部变量只能在其被声明的函数内部访问,而全局变量可以在整个程序范围内访问。调用函数时,所有在函数内声明的变量名称都将被加入到作用域中。如下实例:
实例(Python 3.0+)#!/usr/bin/python3 total = 0 # 这是一个全局变量 # 可写函数说明 def sum( arg1, arg2 ): #返回2个参数的和." total = arg1 + arg2 # total在这里是局部变量. print ("函数内是局部变量 : ", total) return total #调用sum函数 sum( 10, 20 ) print ("函数外是全局变量 : ", total)
以上实例输出结果:
函数内是局部变量 : 30函数外是全局变量 : 0global 和 nonlocal关键字
当内部作用域想修改外部作用域的变量时,就要用到global和nonlocal关键字了。
以下实例修改全局变量 num:
实例(Python 3.0+)#!/usr/bin/python3 num = 1 def fun1(): global num # 需要使用 global 关键字声明 print(num) num = 123 print(num) fun1() print(num)
以上实例输出结果:
1123123
如果要修改嵌套作用域(enclosing 作用域,外层非全局作用域)中的变量则需要 nonlocal 关键字了,如下实例:
实例(Python 3.0+)#!/usr/bin/python3 def outer(): num = 10 def inner(): nonlocal num # nonlocal关键字声明 num = 100 print(num) inner() print(num) outer()
以上实例输出结果:
100100
另外有一种特殊情况,假设下面这段代码被运行:
实例(Python 3.0+)#!/usr/bin/python3 a = 10 def test(): a = a + 1 print(a) test()
以上程序执行,报错信息如下:
Traceback (most recent call last): File "test.py", line 7, in test() File "test.py", line 5, in test a = a + 1UnboundLocalError: local variable 'a' referenced before assignment
错误信息为局部作用域引用错误,因为 test 函数中的 a 使用的是局部,未定义,无法修改。
修改 a 为全局变量,通过函数参数传递,可以正常执行输出结果为:
实例(Python 3.0+)#!/usr/bin/python3 a = 10 def test(a): a = a + 1 print(a) test(a)
执行输出结果为:
11
lambda不是python的保留字_python-nonlocal关键字的使用,lambda表达式(学习到function到变...相关推荐
- lambda函数是不是python的保留字_Python包含的保留字
Python 包含的保留字可以执行如下命令进行查看: >>> import keyword >>> keyword.kwlist ['False', 'None', ...
- python整体设计目标_Python 入門語法和類型(学习)
http://www.cnblogs.com/mcdou/archive/2011/08/02/2125016.html Python的设计目标之一是让源代码具备高度的可读性.它设计时尽量使用其它语言 ...
- 【Python成长之路】python 基础篇 -- global/nonlocal关键字使用
课程起源 有一次在工作中编写python工具时,遇到一个 问题:从配置文件读取变量A后,无法在内存中把A的值改变成新的内容.为了解决"更新内存中变量"的这个问题,查找了一些帖子,结 ...
- python 函数嵌套和nonlocal关键字
python函数可以嵌套使用,使用也比较简单,举个栗子: def outer():print("outer")def inner():print("inner" ...
- Python中定义函数的关键字是什么?一起来学习下吧
python中定义函数的关键字是def. Python使用def关键字开始函数定义,紧接着是函数名,括号内部为函数的参数,内部为函数的具体功能实现代码,如果想要函数有返回值, 在expressions ...
- none是不是python的保留字_Python主要保留字
保留字 含义 None 表示该值是一个空对象 as 用于类型转换 assert 断言,用于判断变量或条件表达式的值是否为真 class 用于定义类 def 用于定义函数或方法 del 删除变量或序列的 ...
- 关于python的保留字_Python中的保留字
原博文 2020-01-29 20:03 − Python 包含的保留字可以执行如下命令进行查看: →import keyword →keyword.kwlist ['False', 'None', ...
- python 量化交易_Python量化交易,tushare与talib学习示例演示,双均线(DMA)买卖策略...
本篇文章为tushare与talib的学习示例,通过双均线策略演示如何使用talib与tushare.下面我们对代码进行详细解析. 引入3个包,分别是talib,tushare和pandas impo ...
- python定义符号常量_python注释、变量、常量的学习
注释.变量.常量的学习 注释 什么是注释 注释是对代码的解释,方便后期的阅读代码,可以使在后期的代码维护中事半功倍. 注释的作用 注释可以用来排查代码中的BUG,在一段有BUG的代码当中,用注释选中其 ...
最新文章
- View的Touch事件分发(一.初步了解)
- Java 线程第三版 第四章 Thread Notification 读书笔记
- C++:MSVCRTD.lib(crtexe.obj) : error LNK2019: 无法解析的外部符号 _main,该符号在函数 ___tmainCRTStart...
- 【LeetCode 剑指offer刷题】字符串题6:67 把字符串转成整数
- 浅谈sass与less区别优缺点
- system文件_大文件拷贝,试试NIO的内存映射
- 扫地机器人腿是咕噜_扫地机器人|如何避免买到“智障”,看这篇
- Java微服务:蛋糕是骗人的,但您不能忽略它
- 循环,函数,指针作业
- HTTP 相应头相关
- c fscanf 按行读取文件_每日干货丨C语言文件操作函数
- 中国首辆火星车全球征名,李彦宏推荐命名:祝融
- Address already in use
- hadoop 修复hdfs中文件块错误 和文件修复 Error: java.io.IOException: Cannot obtain block length for LocatedBlock
- 常用医学科研软件有哪些?
- IE9修改收藏夹位置
- 自己动手写Spring-1-简单的IOC实现
- mac常见问题(五) Mac 无法开机
- 脱敏数据的残余风险评估
- $q -- AngularJS中的服务