函数的嵌套+nonlocal和global关键字(重点)
1.在函数中声明函数
在内部函数中使用变量的时候, 查找顺序: 先找自己 -> 上一层 -> 上一层..全局 -> 内置
# 函数的互相调用
# def func1():
# print("我是神器的func1")
#
# def func2():
# func1()
# print("我是神器的func2")
#
# def func3():
# print("我是神器的func3")
# # func5()
#
# def func4():
# func3()
# print("我是神器的func4")
#
# def func5():
# func2()
# func3()
# print("我是神器的func5")
#
# def func6():
# func5()
# print("我是神器的func6")
# func3()
# func1()
#
# func6()
2.nonlocal和global关键字(重点)
global: 在局部引入全局变量
nonlocal: 在局部...内层函数引入外层离他最近的那个变量.
# def outer():
# def inner():
# print("我的天哪")
# print("还可以这样写???")
# inner()
#
# outer() # inner() # 在全局不能找到局部的内容 # def func1():
# print("1")
# def func2():
# print("2")
# def func3():
# print("3")
# print("4")
# func3()
# print(5)
# print("6")
# func2()
# print("7")
#
# func1() # 全局变量一般是不能随意的修改的
# a = 10
# def func():
# # 慎用.
# global a # global 表示从全局把一个变量引入到局部, 后面使用的a都是全局变量
# a += 10 # ?? a = a + 10 # 现在的a是全局的, 你现在视图改全局变量
# print("里面的打印",a)
# func()
# print("外面的打印", a) # a = 10
# def func():
# def inner():
# # 慎用.
# global a # global 表示从全局把一个变量引入到局部, 后面使用的a都是全局变量
# a += 10 # ?? a = a + 10 # 现在的a是全局的, 你现在视图改全局变量
# print("里面的打印",a)
# inner()
# func()
# print("外面的打印", a) # nonlocal 在局部, 寻找离他最近的外层的一个变量
# a = 50
# def func1():
# # a = 10 # 局部
# def func2():
# nonlocal a # 不找全局, global找全局
# a += 10 # a = a + 10 python不让这么干
# print("func2", a)
# func2()
# print(a)
# func1()
# print(a) # 如果没有nonlocal和global 查找的顺序: 自己, 上一层, 上一层, 上一层 # def func0():
# a = 50
# def func1():
# a = 10 # 局部
# def func2():
# nonlocal a # 不找全局, global找全局
# a += 10 # a = a + 10 python不让这么干
# print("func2", a)
# func2()
# print(a)
# func1()
# print(a)
# func0() # a = 1
# def fun_1():
# a = 2
# def fun_2():
# nonlocal a
# a = 3
# def fun_3():
# a = 4
# print(a)
# print(a)
# fun_3()
# print(a)
# print(a)
# fun_2()
# print(a)
# print(a)
# fun_1()
# print(a) flag = False def login():
global flag
uname = input("用户名:")
upwd = input("密码:")
if uname == "alex" and upwd == "123":
flag = True
else:
flag = False def fatie():
if flag == True:
print("可以发帖")
else:
print("滚去登录") login() fatie()
fatie()
fatie()
fatie()
函数的嵌套+nonlocal和global关键字(重点)的更多相关文章
- python第十三天,函数的嵌套定义,global,nonlocal关键字的使用,闭包及闭包的运算场景,装饰器
今日内容 1. 函数的嵌套定义 2.global,nonlocal关键字 3.闭包及闭包的运用场景 4.装饰器 函数的嵌套定义 1. 概念:在一个函数内部定义另一个函数 2 .为什么要有函数的嵌套定义 ...
- python13 1.函数的嵌套定义 2.global、nonlocal关键字 3.闭包及闭包的运用场景 4.装饰器
## 复习 '''1.函数对象:函数名 => 存放的是函数的内存地址1)函数名 - 找到的是函数的内存地址2)函数名() - 调用函数 => 函数的返回值 eg:fn()() =&g ...
- day13函数的嵌套定义,global、nonlocal关键字,闭包及闭包的运用场景,装饰器
复习 ''' 1.函数对象:函数名 => 存放的是函数的内存地址 1)函数名 - 找到的是函数的内存地址 2)函数名() - 调用函数 => 函数的返回值 eg:fn()() => ...
- python学习Day13 函数的嵌套定义、global、nonlocal关键字、闭包及闭包的运用场景、装饰器
复习 1.函数对象:函数名 => 存放的是函数的内存地址1)函数名 - 找到的是函数的内存地址2)函数名() - 调用函数 => 函数的返回值 eg:fn()() => fn的返回值 ...
- Python nonlocal 与 global 关键字解析
nonlocal 首先,要明确 nonlocal 关键字是定义在闭包里面的.请看以下代码: x = 0 def outer(): x = 1 def inner(): x = 2 print(&quo ...
- day13(函数嵌套定义,global,nonlocal关键字,闭包,装饰器)
一,复习 ''' 1.函数对象:函数名 => 存放的是函数的内存地址 1)函数名 - 找到的是函数的内存地址 2)函数名() - 调用函数 => 函数的返回值 eg:fn()() => ...
- Python--day13(函数嵌套定义,global、nonlocal、闭包函数、装饰器)
今日主要内容 1. 函数的嵌套定义 2. global.nonlocal关键字 3. 闭包及闭包的应用场景 4. 装饰器 1. 函数的嵌套定义 概念:在一个函数的内部定义另一个函数 为什么要有 ...
- nonlocal和global
获取变量时遵循LEGB原则,修改变量时需要global/nonlocal进行修改 global # global的使用 函数外定义了全局变量: global关键字在函数内会修改全局变量 函数外没定义全 ...
- 全局变量和局部变量(global关键字)
1.定义在函数外部的就是全局变量,它的作用域从定义处一直到文件结尾. 2.函数内定义的变量就是局部变量,它的作用域为函数定义范围内. 3.函数之间存在作用域互不影响. 4.函数内访问全局变量需要 gl ...
随机推荐
- Visual Studio 2010 出现关于ActivityLog.xml错误的解决方案
在用VS编写程序是第一次会跳出“Visual Studio has encountered an exception.This may be caused by an extension. You c ...
- RedHat7.3安装MySQL5.7
1.下载Mysql安装包 https://cdn.mysql.com//Downloads/MySQL-5.7/mysql-5.7.20-1.el6.x86_64.rpm-bundle.tar 附百度 ...
- Linux split命令参数及用法详解---linux分割文件命令
转载自:http://blog.csdn.net/xiaoshunzi111/article/details/52173994 功能说明:分割文件. Split:按指定的行数截断文件 格式: spli ...
- 一加3刷不了官方recoery
遇到 target reported max download size of 直接用救砖工具,恢复出厂. http://www.oneplusbbs.com/thread-2849353-1-1.h ...
- WebService C#开发/调用
简单描述C#开发WebService操作步骤以及调用方式 WebService开发 第一步:创建Web空项目 第二步:为创建的Web空项目添加Web服务 第三步:实现WebService方法(仅供参考 ...
- TableLayoutPanel 行高列宽设置
/// <summary> /// 获取TableLayoutPanel指定行的高度 /// </summary> /// <param name="layou ...
- CentOS 7.4 初次手记:第三章 CentOS基础了解
第三章 CentOS基础了解... 36 第一节 语言编码.终端... 36 I 查看语言编码... 36 II Tty?.pts/?. 36 第二节 bash/sh command. 38 I 查找 ...
- Map集合利用比较器Comparator根据Key和Value的排序
TreeMap排序 根据Key进行排序 Map的根据key排序需要用到TreeMap对象,因为它是默认按照升序进行输出的,可以使用比较器compareTo对它进行降序排序,Comparator可以对集 ...
- Flask--异常处理
异常处理: abort(404)-捕获HTTP抛出的统一状态码 @app.errorhandler-捕获全局异常错误码,捕获异常错误 @app.route("/demo4") de ...
- [蓝桥杯]ALGO-87.算法训练_字串统计
问题描述 给定一个长度为n的字符串S,还有一个数字L,统计长度大于等于L的出现次数最多的子串(不同的出现可以相交),如果有多个,输出最长的,如果仍然有多个,输出第一次出现最早的. 输入格式 第一行一个 ...