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 相关文章推荐
下载安装setuptool和pip linux安装pip    
Jan 24 Python
跟老齐学Python之一个免费的实验室
Sep 14 Python
python安装教程 Pycharm安装详细教程
May 02 Python
python编程培训 python培训靠谱吗
Jan 17 Python
Python爬虫小技巧之伪造随机的User-Agent
Sep 13 Python
Python docx库用法示例分析
Feb 16 Python
python递归法实现简易连连看小游戏
Mar 25 Python
python实现差分隐私Laplace机制详解
Nov 25 Python
Pytorch 神经网络—自定义数据集上实现教程
Jan 07 Python
python中文分词库jieba使用方法详解
Feb 11 Python
Python如何实现的二分查找算法
May 27 Python
Django中使用Celery的方法步骤
Dec 07 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
Syphon 使用方法
2021/03/03 冲泡冲煮
第十节--抽象方法和抽象类
2006/11/16 PHP
PHP常用处理静态操作类
2015/04/03 PHP
PHP的CURL方法curl_setopt()函数案例介绍(抓取网页,POST数据)
2016/12/14 PHP
让FireFox支持innerText的实现代码
2009/12/01 Javascript
js屏蔽鼠标键盘(右键/Ctrl+N/Shift+F10/F11/F5刷新/退格键)
2013/01/24 Javascript
cookie中的path与domain属性详解
2013/12/18 Javascript
angularjs中的e2e测试实例
2014/12/06 Javascript
JavaScript生成SQL查询表单的方法
2015/08/13 Javascript
js判断上传文件后缀名是否合法
2016/01/28 Javascript
浅谈Javascript数组(推荐)
2016/05/17 Javascript
js选择器全面解析
2016/06/27 Javascript
Ionic+AngularJS实现登录和注册带验证功能
2017/02/09 Javascript
JS优化与惰性载入函数实例分析
2017/04/06 Javascript
jQuery实现点击图标div循环放大缩小功能
2018/09/30 jQuery
vue 实现小程序或商品秒杀倒计时
2019/04/14 Javascript
js+canvas实现五子棋小游戏
2020/08/02 Javascript
Python实现的数据结构与算法之基本搜索详解
2015/04/22 Python
Python Property属性的2种用法
2015/06/21 Python
python实现多线程抓取知乎用户
2016/12/12 Python
PyCharm代码提示忽略大小写设置方法
2018/10/28 Python
Django 视图层(view)的使用
2018/11/09 Python
python list多级排序知识点总结
2019/10/23 Python
canvas简易绘图的实现(海绵宝宝篇)
2018/07/04 HTML / CSS
跨域修改iframe页面内容详解
2019/10/31 HTML / CSS
美国第二大连锁书店:Books-A-Million
2017/12/28 全球购物
德国足球商店:OUTFITTER
2019/05/06 全球购物
Java中会存在内存泄漏吗,请简单描述
2016/12/22 面试题
机电工程学生自荐信范文
2013/12/07 职场文书
高中的职业生涯规划书
2013/12/28 职场文书
弘扬雷锋精神活动演讲稿
2014/03/04 职场文书
党员个人剖析材料
2014/09/30 职场文书
2014年人力资源部工作总结
2014/11/19 职场文书
医疗纠纷调解协议书
2015/08/06 职场文书
放假通知怎么写
2015/08/18 职场文书
高一化学教学反思
2016/02/22 职场文书