作用域|学习笔记

简介: 快速学习 作用域

开发者学堂课程【Python 语言基础 3:函数、面向对象、异常处理作用域】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/601/detail/8730



内容简介

一、什么是作用域

二、全局作用域

三、函数作用域

 

一、什么是作用域

# 作用域(scope)指的是变量生效的区域

(写一个变量不一定在整个程序都可见)

b=20 # 全 局变量

def  fn()

a=10 # a 定义在了函数内部,所以他的作用域就是函数内部,函数外部无法访问

print(‘函数内部:’,‘a=’,a)

Traceback(must recent call last):

File“06.作用于与命名空间.py”,line 10, in <module>

Print(‘函数外部:’,‘a=’,a)

NameError: name ‘a’ is not defined

***Rep1 Closed***

print(‘函数内部:’,‘b=’,b)

 

# print(‘函数外部:’,‘a=’,a)

# print(‘函数外部:’,‘b=’,b)

 

在 Python 中一共有两种作用域

 

二、全局作用域

- 全局作用域在程序执行时创建,在程序执行结束时销毁 .

- 在全局作用域中定义的变量,都属于全局变量,全局变量可以在程除的任意位置被访问

 

三、函数作用域

#   - 函数作用域在函数调用时创建,在调用结束时销毁

#   - 函数每调用一次就会产生一个新的函数作用域

例:

fn()

fn()

fn()

 

#   -在函数作用域中定义的变量,都是局部变量,它只能在函数内部被访问

变量的查找

#   - 当使用变量时,会优先在当前作用域中寻找该变量,如果有则使用,如果没有则继续去上一级作用域中寻找,如果有则使用,

没有则继续去上一级作用域中寻找,以此类推,

直到找到全局作用域,依然没找到,则抛出异常

Name Error: name ‘a’ is not defined

 

def  fn2():

a=30

def  fn3():

print(‘fn3中:’,‘a=’,a)

fn3()

fn3中:a=30

***Rep1 Closed***

(内部函数能看到外部函数,外部函数能看到全局函数;外部函数不能看到内部函数)

# fn2()

a=20

 

def fn3():

a=10 #在函数中为变量赋值时,默认都是局部变量赋值

# 如果希望在函数内部修改全局变量,则需要使用 global 关键字,来声明变量

global a # 声明在函数内部的使用a是全局变量,此时再去修改 a 时,就是在修改全局的 a

a=10

print(‘函数内部:’,‘a=’,a)

 

fn3()

print(‘函数外部:’,‘a=’,a)

相关文章
|
11天前
|
JavaScript 前端开发 Java
什么是作用域,它的作用是什么?
什么是作用域,它的作用是什么?
11 1
|
1月前
|
JavaScript 前端开发
js开发:请解释什么是作用域(scope),并说明全局作用域、局部作用域和块级作用域的区别。
JavaScript中的作用域规定了变量和函数的可见性与生命周期。全局作用域适用于整个脚本,变量可通过全局对象访问,可能导致命名冲突和内存占用。局部作用域限于函数内部,每次调用创建新作用域,执行完毕后销毁。ES6引入的块级作用域通过`let`和`const`实现,变量仅在其代码块内有效,并有暂时性死区。作用域机制有助于代码组织和变量管理。
23 1
|
10月前
|
Linux 网络架构
暂时性死区以及函数作用域
暂时性死区以及函数作用域
106 0
|
自然语言处理 JavaScript 前端开发
作用域是什么
作用域是什么
81 0
|
存储 自然语言处理 JavaScript
作用域相关的知识点:闭包、执行上下文、LHS/RHS、词法作用域
作用域相关的知识点:闭包、执行上下文、LHS/RHS、词法作用域
92 0
|
PHP 开发者
超全局作用域|学习笔记
快速学习超全局作用域
74 0
超全局作用域|学习笔记
|
自然语言处理 JavaScript 前端开发
这次写的不只是函数作用域,而是。。。。
这次写的不只是函数作用域,而是。。。。
80 0
这次写的不只是函数作用域,而是。。。。
|
编译器 C语言 开发者
作用域和链接属性|学习笔记
当变量被定义在程序的不同位置时,它的作用范围是不一样的,这个作用范围就是我们所说的作用域。
90 0
作用域和链接属性|学习笔记
|
前端开发
作用域和作用域链
作用域和作用域链
102 0
作用域和作用域链
|
存储 自然语言处理 JavaScript
关于作用域与作用域链
继续来了解一下ES6,顺便把前段时间留下作用域的坑也填上。 JavaScript中,有一个被称之为作用域(scope)的特性,在之前闭包的文章中提到过,现在来梳理一下。