作用域

作用域

bar()整个函数都处在外部foo()函数的作用域里(foo()是我们可以从外部访问的一个对象区域)。除了在foo()函数内部可以调用bar(),外部不能直接调用bar()

变量作用域

作用域的产生

在作用域中定义的变量,一般只在作用域内有效。需要注意的是,在if-elif-else,for-else,while-else,try-except(else-finally)等关键字的语句块中不会产生作用域。

作用域的类型

python中,使用一个变量,不需要预先声明。但真正使用的时候,必须绑定到某个内存对象。这种变量名的绑定将在当前作用域引入新的变量,同时屏蔽外层作用域中的相同变量。

  • 局部作用域(locale — L)

    • 局部变量:包含在def关键字定义的语句块中,即在函数中定义的变量。每当函数被调用时都会创建一个新的局部作用域。Python中也有递归,即自己调用自己,每次调用都会创建一个新的局部命名空间。在函数内部的变量声明,除非特别的声明为全局变量,否则均默认为局部变量。有些情况需要在函数内部定义全局变量,这时可以使用global关键字来声明变量的作用域为全局。局部变量域就像一个 栈,仅仅是暂时的存在,依赖创建该局部作用域的函数是否处于活动的状态。所以,一般建议尽量少定义全局变量,因为全局变量在模块文件运行的过程中会一直存在,占用内存空间。
      注意:如果需要在函数内部对全局变量赋值,需要在函数内部通过global语句声明该变量为全局变量。
  • 嵌套作用域(enclosing — E)

    • E也包含在def关键字,E和L是相对的,E相对于上层函数而言也是L。与L的区别在于,对于一个函数而言,L是定义在定义在此函数内部的局部作用域。
  • 全局作用域(Global — G)

    • 即在模块层次中定义的变量。模块顶层申明的变量具有全局作用域。从外部来看,模块的全局变量就是一个模块对象的属性。
  • 内置作用域(built-in — B)

    • 系统固定模块中定义的变量。

搜索变量名的优先级:局部作用域>嵌套作用域>全局作用域>内置作用域

全局变量和局部变量

gbl_str = 'foo'

def foo():
    loc_str = 'bar'
    return gbl_str + loc_str
print(foo())
print(gbl_str)
#输出
foobar
foo

如果在全局变量中有和局部变量同名的变量,然后再局部变量中又有重新给变量赋值,那在赋值之前不能调用这个变量。

a = 123


def bar():
    print('a', a)
    a = 100
    print('a', a)


bar()
#输出
会报错
UnboundLocalError: local variable 'a' referenced before assignment

global

可变类型的全局变量

a = 6688
def foo():
    global a  # 声明为全局变量
    print("foo(),a:\t", a)
    a = 666
    print("foo(),a:\t", a)
def bar():
    print("bar(),a:\t", a)
foo()
bar()
#foo(),a:	 6688
#foo(),a:	 666
#bar(),a:	 666
a = 6688
def foo():
    a = 666  # 仍为局部变量
    def inner_foo():
        global a  # 声明inner_foo()中的a为全局变量
        print(a)
        a = 888
        print(a)
    inner_foo()
    print(a)
print(a)
foo()
print(a)
#6688
#6688
#888
#666
#888
内容概要:本文系统介绍了算术优化算法(AOA)的基本原理、核心思想及Python实现方法,并通过图像分割的实际案例展示了其应用价值。AOA是一种基于种群的元启发式算法,其核心思想来源于四则运算,利用乘除运算进行全局勘探,加减运算进行局部开发,通过数学优化器加速函数(MOA)和数学优化概率(MOP)动态控制搜索过程,在全局探索与局部开发之间实现平衡。文章详细解析了算法的初始化、勘探与开发阶段的更新策略,并提供了完整的Python代码实现,结合Rastrigin函数进行测试验证。进一步地,以Flask框架搭建前后端分离系统,将AOA应用于图像分割任务,展示了其在实际工程中的可行性与高效性。最后,通过收敛速度、寻优精度等指标评估算法性能,并提出自适应参数调整、模型优化和并行计算等改进策略。; 适合人群:具备一定Python编程基础和优化算法基础知识的高校学生、科研人员及工程技术人员,尤其适合从事人工智能、图像处理、智能优化等领域的从业者;; 使用场景及目标:①理解元启发式算法的设计思想与实现机制;②掌握AOA在函数优化、图像分割等实际问题中的建模与求解方法;③学习如何将优化算法集成到Web系统中实现工程化应用;④为算法性能评估与改进提供实践参考; 阅读建议:建议读者结合代码逐行调试,深入理解算法流程中MOA与MOP的作用机制,尝试在不同测试函数上运行算法以观察性能差异,并可进一步扩展图像分割模块,引入更复杂的预处理或后处理技术以提升分割效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值