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 相关文章推荐
Python操作列表的常用方法分享
Feb 13 Python
Python标准库之多进程(multiprocessing包)介绍
Nov 25 Python
用Python解析XML的几种常见方法的介绍
Apr 09 Python
Python中的列表生成式与生成器学习教程
Mar 13 Python
Python数据分析之如何利用pandas查询数据示例代码
Sep 01 Python
django使用html模板减少代码代码解析
Dec 12 Python
python如何爬取个性签名
Jun 19 Python
pymysql的简单封装代码实例
Jan 08 Python
python绘制玫瑰的实现代码
Mar 02 Python
Python基于requests库爬取网站信息
Mar 02 Python
python利用google翻译方法实例(翻译字幕文件)
Sep 21 Python
python中Tkinter 窗口之输入框和文本框的实现
Apr 12 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
推荐文章系统(一)
2006/10/09 PHP
php实现的mongodb操作类
2015/05/28 PHP
php下载文件,添加响应头的简单实例
2016/09/22 PHP
PHP实现二维数组去重功能示例
2017/01/12 PHP
PHP实现数组转JSon和JSon转数组的方法示例
2018/06/14 PHP
基于javascript的COOkie的操作实现只能点一次
2014/12/26 Javascript
JavaScript的Date()方法使用详解
2015/06/09 Javascript
Vue.js实现在下拉列表区域外点击即可关闭下拉列表的功能(自定义下拉列表)
2017/05/30 Javascript
Three.js基础学习教程
2017/11/16 Javascript
基于Vue 服务端Cookies删除的问题
2018/09/21 Javascript
使用jQuery mobile NuGet让你的网站在移动设备上同样精彩
2019/06/18 jQuery
vue绑定数字类型 value为数字的实例
2020/08/31 Javascript
基于js实现的图片拖拽排序源码实例
2020/11/04 Javascript
[46:58]完美世界DOTA2联赛PWL S3 Forest vs LBZS 第一场 12.17
2020/12/19 DOTA
python实现list元素按关键字相加减的方法示例
2017/06/09 Python
详解python中的文件与目录操作
2017/07/11 Python
Python搜索引擎实现原理和方法
2017/11/27 Python
Tensorflow卷积神经网络实例进阶
2018/05/24 Python
python utc datetime转换为时间戳的方法
2019/01/15 Python
Django CBV与FBV原理及实例详解
2019/08/12 Python
Python matplotlib画曲线例题解析
2020/02/07 Python
爬虫代理的cookie如何生成运行
2020/09/22 Python
Pyside2中嵌入Matplotlib的绘图的实现
2021/02/22 Python
Linux机考试题
2015/07/17 面试题
写好自荐信要注意的问题
2013/11/10 职场文书
外贸业务员求职信范文
2013/12/12 职场文书
小学生家长评语大全
2014/02/10 职场文书
违章停车检讨书
2014/10/21 职场文书
人事主管岗位职责
2015/02/04 职场文书
2014年度个人工作总结范文
2015/03/09 职场文书
红与黑读书笔记
2015/06/29 职场文书
2019年感恩励志演讲稿(收藏备用)
2019/09/11 职场文书
导游词之扬州大明寺
2019/10/09 职场文书
IIS服务器中设置HTTP重定向访问HTTPS
2022/04/29 Servers
win10如何更改appdata文件夹的默认位置?
2022/07/15 数码科技
Redis配置外网可访问(redis远程连接不上)的方法
2022/12/24 Redis