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对象体系深入分析
Oct 28 Python
深入浅析ImageMagick命令执行漏洞
Oct 11 Python
Python实现的多进程和多线程功能示例
May 29 Python
Python中如何导入类示例详解
Apr 17 Python
在PYQT5中QscrollArea(滚动条)的使用方法
Jun 14 Python
使用python telnetlib批量备份交换机配置的方法
Jul 25 Python
python计算二维矩形IOU实例
Jan 18 Python
使用Python实现批量ping操作方法
May 06 Python
浅谈Python协程
Jun 17 Python
2021年的Python 时间轴和即将推出的功能详解
Jul 27 Python
Python Selenium实现无可视化界面过程解析
Aug 25 Python
opencv用VS2013调试时用Image Watch插件查看图片
Jul 26 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
windows下升级PHP到5.3.3的过程及注意事项
2010/10/12 PHP
php 伪造本地文件包含漏洞的代码
2011/11/03 PHP
修改php.ini以达到屏蔽错误信息并记录日志
2013/06/16 PHP
使用图灵api创建微信聊天机器人
2015/07/23 PHP
php+jQuery递归调用POST循环请求示例
2016/10/14 PHP
实例讲解YII2中多表关联的使用方法
2017/07/21 PHP
PHP实现使用DOM将XML数据存入数组的方法示例
2017/09/27 PHP
redis+php实现微博(三)微博列表功能详解
2019/09/23 PHP
js和php如何获取当前url的内容
2013/09/22 Javascript
scrollWidth,clientWidth,offsetWidth的区别
2015/01/13 Javascript
jQuery居中元素scrollleft计算方法示例
2017/01/16 Javascript
详解Angular的8个主要构造块
2017/06/20 Javascript
Angular 如何使用第三方库的方法
2018/04/18 Javascript
微信小程序rich-text富文本用法实例分析
2019/05/20 Javascript
Vue左滑组件slider使用详解
2020/08/21 Javascript
搭建vscode+vue环境的详细教程
2020/08/31 Javascript
python 从远程服务器下载日志文件的程序
2013/02/10 Python
python实现电子词典
2020/04/23 Python
Python利用operator模块实现对象的多级排序详解
2017/05/09 Python
django上传图片并生成缩略图方法示例
2017/12/11 Python
Python机器学习之决策树算法
2017/12/22 Python
如何优雅地改进Django中的模板碎片缓存详解
2018/07/04 Python
Python爬虫实现的根据分类爬取豆瓣电影信息功能示例
2019/09/15 Python
Python 3 使用Pillow生成漂亮的分形树图片
2019/12/24 Python
python自动脚本的pyautogui入门学习
2020/04/01 Python
django使用JWT保存用户登录信息
2020/04/22 Python
python根据完整路径获得盘名/路径名/文件名/文件扩展名的方法
2020/04/22 Python
使用pandas库对csv文件进行筛选保存
2020/05/25 Python
详解用Python爬虫获取百度企业信用中企业基本信息
2020/07/02 Python
介绍一下Make? 为什么使用make
2013/12/08 面试题
英语自荐信范文
2013/12/11 职场文书
深入解析NumPy中的Broadcasting广播机制
2021/05/30 Python
教你快速构建一个基于nginx的web集群项目
2021/11/27 Servers
教你部署vue项目到docker
2022/04/05 Vue.js
微信小程序调用python模型
2022/04/21 Python
Hive HQL支持2种查询语句风格
2022/06/25 数据库