python3学习笔记12(变量作用域)
变量作用域
参考http://www.runoob.com/python3/python3-function.html
Python 中,程序的变量并不是在哪个位置都可以访问的,访问权限决定于这个变量是在哪里赋值的。
变量的作用域决定了在哪一部分程序可以访问哪个特定的变量名称。Python的作用域一共有4种,分别是:
- L (Local) 局部作用域
- E (Enclosing) 闭包函数外的函数中
- G (Global) 全局作用域
- B (Built-in) 内建作用域
以 L –> E –> G –>B 的规则查找,即:在局部找不到,便会去局部外的局部找(例如闭包),再找不到就会去全局找,再者去内建中找。
Python 中只有模块(module),类(class)以及函数(def、lambda)才会引入新的作用域,例如只定义在函数中,就是局部变量,外部就不能访问。
其它的代码块(如 if/elif/else/、try/except、for/while等)是不会引入新的作用域的,也就是说这些语句内定义的变量,外部也可以访问。
全局变量与局部变量
total = 0 #全局变量
def sum(arg1,arg2):
total = arg1 + arg2 #total在这里是局部变量
print("函数内是局部变量: ",total)
return total sum(10,20) #调用sum函数
print("函数外是全局变量: ",total)
global 和 nonlocal关键字
#内部作用域想要修改外边作用域的变量,需要用到global和nonlocal关键字
num = 1
def fun1():
global num #用global关键字声明
print(num)
num = 123
print(num)
fun1()
print(num) def outer():
num = 10
def inner():
nonlocal num
num = 100
print(num)
inner()
print(num)
outer()
python3学习笔记12(变量作用域)的更多相关文章
- Python 3 学习笔记之——变量作用域、模块和包
1. 变量作用域 Python 中,程序的变量并不是在哪个位置都可以访问的,访问权限决定于这个变量是在哪里赋值的.变量的作用域决定了在哪一部分程序可以访问哪个特定的变量名称.Python 的作用域一共 ...
- Python3 学习笔记之 变量/字符串/if/while/逻辑运算符/模块引用
变量/if/while/逻辑运算符/模块引用: 变量: 使用变量前必须先赋值. 大小写区分. Python创建字符串,在字符串两边可以加上单引号或者双引号. 打印单引号或双引号,使用转移\ 使用\进行 ...
- Python3+Selenium3+webdriver学习笔记12(js操作应用:滚动条 日历 内嵌div)
#!/usr/bin/env python# -*- coding:utf-8 -*-'''Selenium3+webdriver学习笔记12(js操作应用:滚动条 日历 内嵌div)'''from ...
- Spring源码学习笔记12——总结篇,IOC,Bean的生命周期,三大扩展点
Spring源码学习笔记12--总结篇,IOC,Bean的生命周期,三大扩展点 参考了Spring 官网文档 https://docs.spring.io/spring-framework/docs/ ...
- Python3学习笔记(urllib模块的使用)转http://www.cnblogs.com/Lands-ljk/p/5447127.html
Python3学习笔记(urllib模块的使用) 1.基本方法 urllib.request.urlopen(url, data=None, [timeout, ]*, cafile=None, ...
- python3学习笔记(7)_listComprehensions-列表生成式
#python3 学习笔记17/07/11 # !/usr/bin/env python3 # -*- conding:utf-8 -*- #通过列表生成式可以生成格式各样的list,这种list 一 ...
- python3学习笔记(6)_iteration
#python3 学习笔记17/07/10 # !/usr/bin/env python3 # -*- coding:utf-8 -*- #类似 其他语言的for循环,但是比for抽象程度更高 # f ...
- python3学习笔记(5)_slice
#python3 学习笔记17/07/10 # !/usr/bin/env python3 # -*- coding:utf-8 -*- #切片slice 大大简化 对于指定索引的操作 fruits ...
- matlab学习笔记12单元数组和元胞数组 cell,celldisp,iscell,isa,deal,cellfun,num2cell,size
一起来学matlab-matlab学习笔记12 12_1 单元数组和元胞数组 cell array --cell,celldisp,iscell,isa,deal,cellfun,num2cell,s ...
随机推荐
- 路径R
定义文件路径时前面加个r 例如 firstfolder = r"C:\Users\1261\Desktop\" 不对其中的符号进行转义
- 从零开始写自己的PHP框架系列教程(一)[core.php]
这里我直接上代码: /** * 框架核心 */ if (version_compare(PHP_VERSION, '5.3.0','<')) { header("Content-Typ ...
- SQA
SQA 一.SQA过程 首先组成一个团队,遵循敏捷开发的原则,进行分工合作,为软件开发编造一个用例故事,画出相应的图,小组讨论合作后写代码,软件质量保证(SQA-Software Quality As ...
- react 组件导出
前段时间忙于公司的招聘,导致react学习停滞了一段时间.今天通过react官方文档在本地创建了一个项目,把里面的文件自己重新开发.遇到了一个有意思的问题 class App extends Reac ...
- vue b表单
你可以用 v-model 指令在表单控件元素上创建双向数据绑定. v-model 会根据控件类型自动选取正确的方法来更新元素. 输入框 实例中演示了 input 和 textarea 元素中使用 v- ...
- vue-cli搭建项目模拟后台接口数据,webpack-dev-conf.js文件配置
webpack.dev.conf.js 首先第一步 const express = require('express');const app = express();var appData = req ...
- CCF 消息传递接口 (队列) 201903-4 (100分)
[题目描述] 老师给了 T 份 MPI 的样例代码,每份代码都实现了 n 个进程通信.这些进程标号 从 0 到 n − 1,每个进程会顺序执行自己的收发指令,如:“S x”,“R x”.“S x”表示 ...
- POJ1064 Cable master(二分 浮点误差)
题目链接:传送门 题目大意: 给出n根长度为1-1e5的电线,想要从中切割出k段等长的部分(不可拼接),问这个k段等长的电线最长可以是多长(保留两位小数向下取整). 思路: 很裸的题意,二分答案即可. ...
- Shell脚本中的逻辑判断、文件目录属性判断、if的特殊用法、case判断
1.Shell脚本中的逻辑判断 格式1:if 条件 ; then 语句; fi格式2:if 条件; then 语句; else 语句; fi格式3:if …; then … ;elif …; then ...
- Python练习十
1.生成随机整数,从1-5取出来然后输入一个数字,来猜,如果大于,则打印bigger小了,则打印less如果相等,则打印equal. import random num1 = random.randi ...