美文网首页Python
变量的作用域:全局变量和局部变量

变量的作用域:全局变量和局部变量

作者: 匿隱 | 来源:发表于2019-02-08 12:59 被阅读10次

1.什么是变量的作用域

就是变量能够使用的范围

2.全局变量和局部变量

a.全局变量 - 没有声明在函数或者类中的变量都是全局变量
全局变量的作用域是从声明开始,到整个文件结束

b.局部变量 - 声明在函数或者类中的变量就是局部变量
局部变量的作用域是从声明开始,到函数结束

总结:当我们调用函数的时候,系统会自动在栈区间专门为这个函数开辟一块独立的内容空间,
用来保存在函数中声明的变量(形参也是属于声明在函数中的变量)。当函数调用结束后,
这个函数对应的栈区间会自动销毁 --- (函数调用过程是一个压栈的过程)

1.全局变量1

# 变量a是全局变量
a = 100

print('外面:', a)
for x in range(5):
    print('循环里:',a)


def func1():
    print('函数中:', a)

func1()

2.全局变量2

# 这儿的y也是全局变量
for y in range(3):
    print(y)

print('外面:', y)

def func2():
    print('函数里面:', y)
func2()

3.局部变量

# a.函数的形参就相当于声明在函数中的变量,所以是局部变量
# num1是局部
def func3(num1):
    print(num1)
    for x in range(3):
        print(num1)
func3(10)

# print(num1)   # 局部变量不能在函数外面使用

# 函数中的nums,max1和item都是局部变量
def func4(*nums):
    # nums = (1, 89, 9, 887, 0)
    max1 = nums[0]
    for item in nums:
        if item > max1:
            max1 = item
    print(max1)


func4(1, 89, 9, 887, 0)

4.如果全局变量和局部变量同名,那么在局部变量的作用域中使用的是局部变量;外部使用的是全局变量

全局变量

aa = 100


def func5():
    # 局部变量aa
    aa = 200
    print('函数里', aa)


func5()

print('外部:', aa)

"""

3.global - 在函数中声明一个全局变量(只能在函数中使用)

在函数中:
global 变量名
变量名 = 值

bb = 111
def func6():
    global bb
    bb = 222
    print('函数里:',bb)

    global aaa
    aaa = 100
    print(aaa)    # 100



func6()
print(bb)
print(aaa)   # 100

4. nonlocal - 想要在局部的局部中去修改布局变量的值,就使用nonlocal对变量进行说明

nonlocal 局部变量
局部变量 = 值

def func11():
    abc = 123
    def func22():
        nonlocal abc
        abc = 333
        print('func22', abc)
    func22()

    print('func11', abc)

func11()

# func22 333
# func11 123
list1 = []
i = 0   [lambda x: x*i]
i = 1   [lambda x: x*i, lambda x: x*i]
i = 2   [lambda x: x*i, lambda x: x*i, lambda x: x*i]
i = 3   [lambda x: x*i, lambda x: x*i, lambda x: x*i, lambda x: x*i]
i = 4   [lambda x: x*i, lambda x: x*i, lambda x: x*i, lambda x: x*i, lambda x: x*i]
"""
list1 = []
for i in range(5):
    list1.append(lambda x: x*i)


print(list1[0](3))
# lambda  x: x* i   x = 3 return 3*4
print(list1[3](3))
# lambda  x: x* i   x  = 3  return 3*4
print(list1)

# list1 = [lambda x: x*2]
# print(list1[0](100))


def func1():
    a = [1, 2]
    print(a[10])
# func1()

a = 10
func1 = lambda x: x*a
a = 20
print(func1(2))   # 40

相关文章

  • 16-修饰符和预处理指令-指趣学院

    全局变量和局部变量 变量作用域基本概念变量作用域:变量的可用范围按照作用域的不同,变量可以分为:局部变量和全局变量...

  • js闭包

    1. 变量作用域 变量作用域两种:全局变量、局部变量。 全局变量:函数外声明的变量,称为全局变量 局部变量:函数...

  • 《javascript基础补充--作用域与作用域链相关知识点》

    关键词:全局变量、局部变量、变量提升机制、内存回收机制、作用域、作用域链 变量(作用域) 局部变量可以与全局变量重...

  • JavaScript变量、函数和变量提升

    一.变量的作用域 变量分为全局变量和局部变量 全局变量: 局部变量:

  • python011-函数2

    变量作用域 变量作用域指的是变量生效的范围,主要分为两类:==局部变量==和==全局变量==。 局部变量 所谓局部...

  • Javascrip 之 变量作用域 & 封闭函数 &am

    变量作用域 变量作用域指的是变量的作用范围,javascript中的变量分为全局变量和局部变量。 1、全局变量:在...

  • 2018.11.2封闭函数,闭包

    一、变量作用域 变量作用域指的是变量的作用范围,javascript中的变量分为全局变量和局部变量 1、全局变量:...

  • 13

    变量作用域 变量作用域指的是变量的作用范围,javascript中的变量分为全局变量和局部变量。 1、全局变量:在...

  • 作用域与作用域链

    作用域与作用域链 一、作用域 变量分为全局变量和局部变量,全局变量就是指该变量的作用域为当前文档,也就是说全局变量...

  • 变量、闭包、封闭函数

    变量的作用域 变量作用域指的是变量的作用范围,javascript 中的变量分为全局变量和局部变量; 1.全局变量...

网友评论

    本文标题:变量的作用域:全局变量和局部变量

    本文链接:https://www.haomeiwen.com/subject/sagadqtx.html