函数的嵌套+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 ...
随机推荐
- django报错解决:Invalid HTTP_HOST header: 'xxx.com'. You may need to add u'xxx.com' to ALLOWED_HOSTS.
django版本:1.11.15 使用uwsgi+nginx运行django程序,出现报错,报错为:Invalid HTTP_HOST header: 'xxx.com:82'. You may ne ...
- jstack实战死循环与死锁学习笔记
一.实战死循环导致CPU飙高 top -p pid -H jstack pid printf "%s" 十进制的线程id 二.创建CUP100%实例(死循环) 1.创建CpuCo ...
- C++Builder XE7 中“匿名”方法实现
class TMyProc : public TCppInterfacedObject<TThreadProcedure> { private: String p1; String p2; ...
- app崩溃后自动重启
android 引用:http://blog.csdn.net/caiwenfeng_for_23/article/details/41184353 package com.tan.abnormalr ...
- [转]TA-Lib 安装
转自:https://mrjbq7.github.io/ta-lib/install.html Installation You can install from PyPI: $ pip instal ...
- 自动加载以及Composer的实现
类的自动加载 两个函数 __autoload()魔术方法.spl_autoload_register 当php文件中使用了new关键字实例化一个对象时,如果该类没有在本php文件中被定义,将会触发__ ...
- sql server 清除数据库中所有表的数据
CREATE PROCEDURE sp_DeleteAllData AS EXEC sp_MSForEachTable 'ALTER TABLE ? NOCHECK CONSTRAINT ALL'- ...
- 黄聪:PHP Ajax 跨域问题最佳解决方案
本文通过设置Access-Control-Allow-Origin来实现跨域. 例如:客户端的域名是client.runoob.com,而请求的域名是server.runoob.com. 如果直接使用 ...
- 关于Maven+Springmvc+Dubbo+Zookeeper整合
为什么要用dubbo? 还是让官方来解释吧: http://dubbo.io/User+Guide-zh.htm http://dubbo.io/ 一般 nginx+tomcat | - ...
- C/C++基础----随机数分布和随机数引擎
随机数分布 除了伯努利分布,其他都是模板,接收单个类型参数,指出分布生成的结果类型. 表示分布生成浮点数,float.double或long double 表示要求一个整型类型,不包括bool或任何c ...