python嵌套函数作用域_Python嵌套函数,作用域与偏函数用法实例分析

本文实例讲述了Python嵌套函数,作用域与偏函数用法。分享给大家供大家参考,具体如下:

内嵌函数(嵌套函数):

意思:在函数里面再定义一个新的函数

如果在函数体内不调用内嵌的函数,那么无法在外部调用

def my_pr1():

print("第一层打印")

def my_pr2():

print("第二层打印")

my_pr2()#如果在函数体内不调用内嵌的函数,那么无法在外部调用

my_pr1()

作用域:

local(局部作用域)  -->enclosing(函数范围作用域)-->global(全局作用域)--->build-in(内建对象作用域)

代码块级别的作用域: Python没有划分代码块作用域

代码块里的变量,外部可以调用

if 1>0:

name="automan"

print(name)

上述代码运行结果:

automan

函数基本的作用域:

局部作用域:

函数内部定义的变量是局部变量,外部无法访问

a=50

def change(x):

x=6

change(a)

print("after change:",a)

上述代码运行结果:

after change: 50

def func3():

superman="automan"

print(superman)

运行结果:

NameError: name 'superman' is not defined

内嵌关系的函数的作用域:

对于内嵌关系的函数的作用域依然遵循local(局部作用域)  -->enclosing(函数范围作用域)-->global(全局作用域)--->build-in(内建对象作用域)

如果自身函数有目标变量,则使用自身函数内的变量的值;

如果没有,会向上找父函数中是否存在目标变量,如果有,则使用父函数中的该变量的值;【如果父函数还有父函数,也会一直向上查找】

直到离开最外层的函数体,那么会在全局范围内找该变量

如果再没有,会到内建对象作用域找

都没有就报错,抛出异常

def func4():

superman="automan"

def haha():

print(superman)

haha()

func4()

运行结果:

automan

非内嵌关系的函数的作用域:

非内嵌关系的函数作用域依然遵循local(局部作用域)  -->enclosing(函数范围作用域)-->global(全局作用域)--->build-in(内建对象作用域)

但由于不是父子关系的嵌套函数,当自身函数范围区域内找不到时,会直接到全局作用域找

aotuman='金甲战士'

def f5():

print(aotuman)

def f4():

aotuman='max'

f5()

f4()

运行结果:

金甲战士

偏函数:

默认填写某个函数的某些参数,返回一个新的函数

避免了参数的重复输入

import functools

print_t=functools.partial(print,end='\t')

print_t(1)

print_t(1)

print_t(1)

上述代码结果:

1    1    1

关于Python相关内容感兴趣的读者可查看本站专题:《Python函数使用技巧总结》、《Python面向对象程序设计入门与进阶教程》、《Python数据结构与算法教程》、《Python字符串操作技巧汇总》、《Python编码操作技巧总结》及《Python入门与进阶经典教程》

希望本文所述对大家Python程序设计有所帮助。

本文标题: Python嵌套函数,作用域与偏函数用法实例分析

本文地址: http://www.cppcns.com/jiaoben/python/295458.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值