局部变量与全局变量

全局变量:全局生效的变量,在顶头的,无缩进的定义的变量。

局部变量:函数内生效的变量,在函数内定义的变量。

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变量,递归,作用域,匿名函数的更多相关文章

  1. Python第七天 函数 函数参数 函数里的变量 函数返回值 多类型传值 函数递归调用 匿名函数 内置函数

    Python第七天   函数  函数参数   函数里的变量   函数返回值  多类型传值     函数递归调用   匿名函数   内置函数 目录 Pycharm使用技巧(转载) Python第一天   ...

  2. day03 函数基本语法及特性 2. 参数与局部变量 3. 返回值 嵌套函数 4.递归 5.匿名函数 6.函数式编程介绍 7.高阶函数 8.内置函数

    本节内容 1. 函数基本语法及特性 2. 参数与局部变量 3. 返回值 嵌套函数 4.递归 5.匿名函数 6.函数式编程介绍 7.高阶函数 8.内置函数 温故知新 1. 集合 主要作用: 去重 关系测 ...

  3. python之三元表达式、列表推导、生成器表达式、递归、匿名函数、内置函数

    目录 一 三元表达式 二 列表推到 三 生成器表达式 四 递归 五 匿名函数 六 内置函数 一.三元表达式 def max(x,y): return x if x>y else y print( ...

  4. Python之函数的递归、匿名函数、内置函数

    一.函数的递归 ''' 1 什么是函数递归 函数递归调用(是一种特殊的嵌套调用):在调用一个函数的过程中,又直接或间接地调用了该函数本身 递归必须要有两个明确的阶段: 递推:一层一层递归调用下去,强调 ...

  5. python 三元表达式、列表推导式、生成器表达式、递归、匿名函数、内置函数

    http://www.cnblogs.com/linhaifeng/articles/7580830.html 三元表达式.列表推导式.生成器表达式.递归.匿名函数.内置函数

  6. python3 速查参考- python基础 6 -> 函数编程之参数、变量、作用域、递归、匿名函数 lambda

    函数基础 1. 速查笔记 #-- 函数相关的语句和表达式 myfunc('spam') # 函数调用 def myfunc(): # 函数定义 return None # 函数返回值 global a ...

  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 #与函 ...

  8. python 三元运算符、推导式、递归、匿名函数、内置函数

    三目运算符 # 三目(元)运算符:就是 if...else...语法糖 # 前提:简化if...else...结构,且两个分支有且只有一条语句 # 注:三元运算符的结果不一定要与条件直接性关系 cmd ...

  9. Python day5 --------递归、匿名函数、高阶函数、内置函数

    一.递归 在函数内部,可以调用其他函数.如果一个函数在内部调用自身本身,这个函数就是递归函数. 递归要求: 1. 必须有一个明确的结束条件 2. 每次进入更深一层递归时,问题规模相比上次递归都应有所减 ...

  10. python协程函数、递归、匿名函数与内置函数使用、模块与包

    目录: 协程函数(yield生成器用法二) 面向过程编程 递归 匿名函数与内置函数的使用 模块 包 常用标准模块之re(正则表达式) 一.协程函数(yield生成器用法二) 1.生成器的语句形式 a. ...

随机推荐

  1. 工具-Git与GitHub-安装以及基本操作(99.5.1)

    @ 目录 1.安装 2.使用 3.工作区和版本库 关于作者 1.安装 1.windows安装 安装后添加环境变量 2.linux安装 sudo apt-get install git 2.使用 1.常 ...

  2. BullseyeCoverage——C/C++代码覆盖率分析工具

    安装 官网下载地址: https://www.bullseye.com/cgi-bin/download 安装过程中需要License, 可以申请评估版本的key或者直接从官网渠道购买. Ubuntu ...

  3. Python机器学习课程:线性回归算法

    本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理 最基本的机器学习算法必须是具有单个变量的线性回归算法.如今,可用的高级机器学习算法,库和技术如此之多 ...

  4. HCIP -- OSPF 总结

    OSPF:Open Shortest path First  :开方式最短路径优先 一.基础知识: 1.使用范围:IGP 2.协议算法特点:链路状态型路由协议,SPF算法 3.协议是否传递网络掩码:是 ...

  5. Web项目访问在C盘的图片(不在当前项目路径下的图片)

    使用ASPX页面处理 前台显示 <img src="/UeImg.aspx?path=C:/YxFile/ueditor/upload/image/20200211/637170508 ...

  6. SecureCRT SSH Linux中不显示彩色 字体颜色、文件夹和文件显示的颜色区别开解决办法

    SecureCRT SSH Linux中不显示彩色 字体颜色.文件夹和文件显示的颜色区别开解决办法 实验环境: 刚开始我的情况是这样的:带颜色的显示不出来,然后还能看到,此处有内容,猜测是Secure ...

  7. Java学习日报7.8

    public class 定义要求文件名和类名保持一致,一个*.Java文件只允许有一个public class定义! 主方法是一切程序的起点, public static void main(Str ...

  8. Java学习日报7.14

    package fabs;import java.util.Scanner;public class Fabs { public static void main(String args[]) { S ...

  9. 高效实用linux命令之-history

    History(历史)命令用法 15 例 如果你经常使用 Linux 命令行,那么使用 history(历史)命令可以有效地提升你的效率.本文将通过实例的方式向你介绍 history 命令的 15 个 ...

  10. sql操作数据库(3)-->外键约束、数据库表之间的关系、三大范式、多表查询、事务

    外键约束 在新表中添加外键约束语法: constraint 外键约束名称 foreign key(外键的字段名称) references 主表表名(主键字段名) 在已有表中添加外键约束:alter t ...