Py变量,递归,作用域,匿名函数
局部变量与全局变量
全局变量:全局生效的变量,在顶头的,无缩进的定义的变量。
局部变量:函数内生效的变量,在函数内定义的变量。
name='1fh'
def changename():
name='sb'
print('shi',name)
changename()
print(name)
函数里的局部变量无法改变修改全局变量
而global可以使函数内出现的函数名变成全局变量处理
那个局部变量可以读取可以赋值
name='1fh'
def changename():
global name
name='sb'
print('shi',name)
changename()
print(name)
一般全局变量大写,局部变量小写。
指定上一级的变量nonlocal
def xiba():
name = 'shit'
print(name)
def xiba1():
nonlocal name
name = 'abcd'
xiba1()
print(name)
xiba()
前向引用:
如果执行一个函数时里面要调用另外一个函数,而另外一个函数在调用函数的后面才
定义,这种情况会出现报错
错误示例
def foo():
print('from foo')
bar()
foo()
def bar():
print('from bar')
递归:一层一层往下,在函数内部,不断调用自己,死循环会报错,要有结束条件
def calc(n):
print(n)
if int(n/2) ==0:
return n
return calc(int(n/2)) #不断调用自己
calc(10)
递归加强版
person_list=['alex','wupeiqi','yuanhao','linhaifeng','sb','sb1']
def ask_way(person_list):
answer1='没有人知道位置'
answer2 = '知道位置'
if len(person_list) == 0:
return answer1
person = person_list.pop(0) # pop是删除第一个位置的元素,并取得这个元素的值
print(person)
if person =='linhaifeng':
return answer2
else:
print('this man dont know the way',person)
return ask_way(person_list) #注意递归的语句要前面要加上return,否则返回值会变成none出错
abcd=ask_way(person_list)
print(abcd)
作用域:函数的执行与进行def定义的那段有关,与在哪调用无关
这里返回的函数名的意思是返回这个函数名所占用的内存地址
def test1():
print('in the test1')
return test1
res= test1()
print(res)
作用域示例:
name = 'alex'
def foo():
name = 'lhf'
def bar():
name='abcd'
print(name)
bar() #这个bar可以成功调用,因为她与def bar同级
foo()
bar() #这个bar不能成功调用会报错,因为它是def bar的上一级
针对报错的问题,可以将bar函数的内存地址弄出来,然后直接对内存地址进行调用
name = 'alex'
def foo():
name = 'lhf'
def bar():
name='abcd'
print(name)
return foo #注意这个return是bar的返回值
return bar #注意这个return是foo的返回值
resbar=foo()
resbar()
sb= resbar()
print(sb)
匿名函数
1定义方法:
使用lambda定义。lambda 形参名:处理的方法
lambda可以随便赋予名字,平常不占用内存
比如以下这段函数
def calc(x):
return x+1
res = calc(10)
print(res)
等同于
func=lambda x:x+1
print(func(10))
比如下面这段函数
name = 'alex'
def changename(x):
return name+'sb'
res=changename('alex')
print(res)
等同于
name=input('press the name')
res=lambda x:str(name)+'sb'
print(res(name))
可以包含多个形参
func=lambda x,y,z:(x+1,y+1,z+1)
print(func(1,3,4))
Py变量,递归,作用域,匿名函数的更多相关文章
- Python第七天 函数 函数参数 函数里的变量 函数返回值 多类型传值 函数递归调用 匿名函数 内置函数
Python第七天 函数 函数参数 函数里的变量 函数返回值 多类型传值 函数递归调用 匿名函数 内置函数 目录 Pycharm使用技巧(转载) Python第一天 ...
- day03 函数基本语法及特性 2. 参数与局部变量 3. 返回值 嵌套函数 4.递归 5.匿名函数 6.函数式编程介绍 7.高阶函数 8.内置函数
本节内容 1. 函数基本语法及特性 2. 参数与局部变量 3. 返回值 嵌套函数 4.递归 5.匿名函数 6.函数式编程介绍 7.高阶函数 8.内置函数 温故知新 1. 集合 主要作用: 去重 关系测 ...
- python之三元表达式、列表推导、生成器表达式、递归、匿名函数、内置函数
目录 一 三元表达式 二 列表推到 三 生成器表达式 四 递归 五 匿名函数 六 内置函数 一.三元表达式 def max(x,y): return x if x>y else y print( ...
- Python之函数的递归、匿名函数、内置函数
一.函数的递归 ''' 1 什么是函数递归 函数递归调用(是一种特殊的嵌套调用):在调用一个函数的过程中,又直接或间接地调用了该函数本身 递归必须要有两个明确的阶段: 递推:一层一层递归调用下去,强调 ...
- python 三元表达式、列表推导式、生成器表达式、递归、匿名函数、内置函数
http://www.cnblogs.com/linhaifeng/articles/7580830.html 三元表达式.列表推导式.生成器表达式.递归.匿名函数.内置函数
- python3 速查参考- python基础 6 -> 函数编程之参数、变量、作用域、递归、匿名函数 lambda
函数基础 1. 速查笔记 #-- 函数相关的语句和表达式 myfunc('spam') # 函数调用 def myfunc(): # 函数定义 return None # 函数返回值 global a ...
- 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 三元运算符、推导式、递归、匿名函数、内置函数
三目运算符 # 三目(元)运算符:就是 if...else...语法糖 # 前提:简化if...else...结构,且两个分支有且只有一条语句 # 注:三元运算符的结果不一定要与条件直接性关系 cmd ...
- Python day5 --------递归、匿名函数、高阶函数、内置函数
一.递归 在函数内部,可以调用其他函数.如果一个函数在内部调用自身本身,这个函数就是递归函数. 递归要求: 1. 必须有一个明确的结束条件 2. 每次进入更深一层递归时,问题规模相比上次递归都应有所减 ...
- python协程函数、递归、匿名函数与内置函数使用、模块与包
目录: 协程函数(yield生成器用法二) 面向过程编程 递归 匿名函数与内置函数的使用 模块 包 常用标准模块之re(正则表达式) 一.协程函数(yield生成器用法二) 1.生成器的语句形式 a. ...
随机推荐
- Python 爬虫进阶必备
关于新闻平台请求头加密参数逻辑分析 抓包与加密定位 先来看看加密的请求
- 使用form表单上传文件
在使用form表单上传文件时候,input[type='file']是必然会用的,其中有一些小坑需要避免. 1.form的 enctype="multipart/form-data" ...
- C# 编译机器码过程原理之再谈反射
一.引言 我们知道在Java中有虚拟机,代码运行时虚拟机把Java语言编译成与机器无关的字节码,然后再把字节码编译成机器指令执行,那么在.NET中程序是如何运行的呢? 其实运行原理是一样的,.NET中 ...
- 微信小程序--每周图书推荐
这是我个人的第一个原生微信小程序,作为一枚萌新,自己没有前端经历,所以代码很混乱,界面很简单,难度也很低,主要用来记录自己学小程序过程中遇到的问题. 一. 先上预览图 左右滑动切换每周推荐的图书,点击 ...
- [LeetCode]654. Maximum Binary Tree最大堆二叉树
每次找到数组中的最大值,然后递归的构建左右树 public TreeNode constructMaximumBinaryTree(int[] nums) { if (nums.length==0) ...
- package和import机制
package是Java中的包机制,包机制的作用是方便为了程序的管理.不同功能的类机制分别存放在不同的包下面.(按照功能划分,不同的包有着不同的性质) package怎么使用:package是一个关键 ...
- 前端面试题归类-css
一.说下盒模型? 有两种盒模型,W3C盒模型和IE盒模型通常说的"IE盒子模型"指的是IE5.5,IE6及其以后,盒模型都为 content-box当浏览器未设置<!doct ...
- AI驱动的超分辨技术落地实践
近年来,随着深度学习技术的快速发展,基于AI的超分辨技术在图像恢复和图像增强领域呈现出广阔的应用前景,受到了学术界和工业界的关注和重视.但是,在RTC视频领域中,很多AI算法并不能满足实际场景下的应用 ...
- ARM CPU的SVC模式
关于ARM CPU模式中的SVC Arm中CPU的模式 [第一方面] 系统sys模式 VS 管理svc模式 首先,sys模式和usr模式相比,所用的寄存器组,都是一样的,但是增加了一些访问一些在usr ...
- kafka-spark偏移量提交至redis kafka1.0版本
kafka版本 1.0.0 spark版本 spark-streaming-kafka-0-10_2.11/** * @created by imp ON 2019/12/21 */class Kaf ...