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解析模块(ConfigParser)使用方法
Dec 10 Python
Python简单网络编程示例【客户端与服务端】
May 26 Python
Python实现图片滑动式验证识别方法
Nov 09 Python
深入了解Python中pop和remove的使用方法
Jan 09 Python
Python装饰器知识点补充
May 28 Python
实例讲解Python脚本成为Windows中运行的exe文件
Jan 24 Python
基于Python实现大文件分割和命名脚本过程解析
Sep 29 Python
Python Tkinter模块 GUI 可视化实例
Nov 20 Python
python使用pyecharts库画地图数据可视化的实现
Mar 25 Python
django自定义非主键自增字段类型详解(auto increment field)
Mar 30 Python
jupyter 使用Pillow包显示图像时inline显示方式
Apr 24 Python
Python3如何使用tabulate打印数据
Sep 25 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
千呼万唤始出来,DOTA2勇士令状不朽宝藏Ⅱ现已推出
2020/08/25 DOTA
PHP新手上路(十一)
2006/10/09 PHP
discuz免激活同步登入代码修改方法(discuz同步登录)
2013/12/24 PHP
php命令行使用方法和命令行参数说明
2014/04/08 PHP
详解如何实现Laravel的服务容器的方法示例
2019/04/15 PHP
PHP实现简单的计算器
2020/08/28 PHP
js格式化货币数据实现代码
2013/09/04 Javascript
javascript日期格式化示例分享
2014/03/05 Javascript
jquery实现select下拉框美化特效代码分享
2015/08/18 Javascript
javascript每日必学之多态
2016/02/23 Javascript
jQuery EasyUI学习教程之datagrid点击列表头排序
2016/07/09 Javascript
bootstrap的常用组件和栅格式布局详解
2017/05/02 Javascript
JS改变页面颜色源码分享
2018/02/24 Javascript
详解vue2.0+vue-video-player实现hls播放全过程
2018/03/02 Javascript
30分钟快速入门掌握ES6/ES2015的核心内容(上)
2018/04/18 Javascript
Bootstrap Table中的多选框删除功能
2018/07/15 Javascript
浅谈vue项目打包优化策略
2018/09/29 Javascript
JavaScript/TypeScript 实现并发请求控制的示例代码
2021/01/18 Javascript
[16:04]DOTA2海涛带你玩炸弹 9月5日更新内容详解
2014/09/05 DOTA
Python的函数嵌套的使用方法
2014/01/24 Python
python通过定义一个类实例作为ftp回调方法
2015/05/04 Python
Python对文件和目录进行操作的方法(file对象/os/os.path/shutil 模块)
2017/05/08 Python
Python简单实现自动删除目录下空文件夹的方法
2017/08/29 Python
对python 数据处理中的LabelEncoder 和 OneHotEncoder详解
2018/07/11 Python
讲解Python3中NumPy数组寻找特定元素下标的两种方法
2019/08/04 Python
在Matplotlib图中插入LaTex公式实例
2020/04/17 Python
Python使用tkinter实现小时钟效果
2021/02/22 Python
Marriott国际:万豪国际酒店查询预订
2017/09/25 全球购物
Java中的基本数据类型所占存储空间大小固定的吗
2012/02/15 面试题
庆元旦迎新年广播稿
2014/02/18 职场文书
令人印象深刻的自荐信
2014/05/25 职场文书
中秋节国旗下演讲稿
2014/09/05 职场文书
2014入党积极分子批评与自我批评思想汇报
2014/09/20 职场文书
2015毕业设计工作总结
2015/07/24 职场文书
Navicat for MySQL的使用教程详解
2021/05/27 MySQL
python超详细实现完整学生成绩管理系统
2022/03/17 Python