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


Posted in Python onDecember 26, 2019

本文实例讲述了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(内建对象作用域)
  1. 如果自身函数有目标变量,则使用自身函数内的变量的值;
  2. 如果没有,会向上找父函数中是否存在目标变量,如果有,则使用父函数中的该变量的值;【如果父函数还有父函数,也会一直向上查找】
  3. 直到离开最外层的函数体,那么会在全局范围内找该变量
  4. 如果再没有,会到内建对象作用域找
  5. 都没有就报错,抛出异常
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 相关文章推荐
vc6编写python扩展的方法分享
Jan 17 Python
Python与shell的3种交互方式介绍
Apr 11 Python
剖析Python的Tornado框架中session支持的实现代码
Aug 21 Python
Python设计模式之MVC模式简单示例
Jan 10 Python
PyCharm设置每行最大长度限制的方法
Jan 16 Python
python 求1-100之间的奇数或者偶数之和的实例
Jun 11 Python
python并发编程多进程之守护进程原理解析
Aug 20 Python
结合OpenCV与TensorFlow进行人脸识别的实现
Oct 10 Python
使用Python刷淘宝喵币(低阶入门版)
Oct 30 Python
django框架单表操作之增删改实例分析
Dec 16 Python
python plt可视化——打印特殊符号和制作图例代码
Apr 17 Python
详解Python中Pyyaml模块的使用
Oct 08 Python
python 串口读取+存储+输出处理实例
Dec 26 #Python
使用Python串口实时显示数据并绘图的例子
Dec 26 #Python
简单了解python字符串前面加r,u的含义
Dec 26 #Python
python关于调用函数外的变量实例
Dec 26 #Python
python3 实现调用串口功能
Dec 26 #Python
将python依赖包打包成window下可执行文件bat方式
Dec 26 #Python
python小项目之五子棋游戏
Dec 26 #Python
You might like
session 的生命周期是多长
2006/10/09 PHP
使用PHP和XSL stylesheets转换XML文档
2006/10/09 PHP
php简单静态页生成过程
2008/03/27 PHP
php无限分类使用concat如何实现
2015/11/05 PHP
thinkPHP5.0框架模块设计详解
2017/03/18 PHP
JavaScript面向对象之体会[总结]
2008/11/13 Javascript
用JQuery调用Session的实现代码
2010/10/29 Javascript
js中widow.open()方法使用详解
2013/07/30 Javascript
常见浏览器多长时间会提示“脚本运行时间过长”总结
2014/04/29 Javascript
通过url查找a元素应用案例
2014/04/29 Javascript
JS给超链接加确认对话框的方法
2015/02/24 Javascript
JS实现带有抽屉效果的产品类网站多级导航菜单代码
2015/09/15 Javascript
javascript实现鼠标点击页面 移动DIV
2016/12/02 Javascript
Vue的Class与Style绑定的方法
2017/09/01 Javascript
vue-cli webpack 引入jquery的方法
2018/01/10 jQuery
Bootstrap Table列宽拖动的方法
2018/08/15 Javascript
用element的upload组件实现多图片上传和压缩的示例代码
2019/02/12 Javascript
微信小程序搭建自己的Https服务器
2019/05/02 Javascript
在vue中使用console.log无效的解决
2020/08/09 Javascript
js+canvas实现画板功能
2020/09/13 Javascript
[53:50]CHAOS vs Mineski 2019国际邀请赛小组赛 BO2 第一场 8.16
2019/08/18 DOTA
用Python的pandas框架操作Excel文件中的数据教程
2015/03/31 Python
django框架自定义用户表操作示例
2018/08/07 Python
python 实现图片旋转 上下左右 180度旋转的示例
2019/01/24 Python
Python计算不规则图形面积算法实现解析
2019/11/22 Python
python从内存地址上加载python对象过程详解
2020/01/08 Python
keras K.function获取某层的输出操作
2020/06/29 Python
python日志通过不同的等级打印不同的颜色(示例代码)
2021/01/13 Python
中国茶叶、茶具一站式网上购物商城:醉品茶城
2018/07/03 全球购物
英国独特家具和家庭用品购物网站:Cuckooland
2020/08/30 全球购物
NET程序员上机面试题
2015/05/23 面试题
好学生评语大全
2014/05/05 职场文书
检查机关领导群众路线教育实践活动个人整改措施
2014/10/28 职场文书
2016幼儿园教师年度考核评语
2015/12/01 职场文书
goland 设置project gopath的操作
2021/05/06 Golang
python opencv通过按键采集图片源码
2021/05/20 Python