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使用Queue在多个子进程间交换数据的方法
Apr 18 Python
Python赋值语句后逗号的作用分析
Jun 08 Python
python使用paramiko实现远程拷贝文件的方法
Apr 18 Python
python PyTorch参数初始化和Finetune
Feb 11 Python
浅谈python中对于json写入txt文件的编码问题
Jun 07 Python
对python程序内存泄漏调试的记录
Jun 11 Python
Python之list对应元素求和的方法
Jun 28 Python
python生成带有表格的图片实例
Feb 03 Python
TensorFlow索引与切片的实现方法
Nov 20 Python
Python函数的迭代器与生成器的示例代码
Jun 18 Python
Python 程序报错崩溃后如何倒回到崩溃的位置(推荐)
Jun 23 Python
Python命令行参数定义及需要注意的地方
Nov 30 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
支持中文的PHP按字符串长度分割成数组代码
2015/05/17 PHP
又拍云异步上传实例教程详解
2016/04/19 PHP
PHP 文件上传限制问题
2019/09/01 PHP
用ASP将SQL搜索出来的内容导出为TXT的代码
2007/07/27 Javascript
javascript 模拟JQuery的Ready方法实现并出现的问题
2009/12/06 Javascript
Jquery工作常用实例 使用AJAX使网页进行异步更新
2011/07/26 Javascript
Javascript this 的一些学习总结
2012/08/02 Javascript
js中的数组Array定义与sort方法使用示例
2013/08/29 Javascript
javascript实现禁止右键和F12查看源代码
2014/12/26 Javascript
jquery实现的伪分页效果代码
2015/10/29 Javascript
javascript HTML+CSS实现经典橙色导航菜单
2016/02/16 Javascript
Bootstrap教程JS插件滚动监听学习笔记分享
2016/05/18 Javascript
基于js对象,操作属性、方法详解
2016/08/11 Javascript
实现easyui的datagrid导出为excel的示例代码
2016/11/10 Javascript
微信扫码支付零云插件版实例详解
2017/04/26 Javascript
详解如何优雅地在React项目中使用Redux
2017/12/28 Javascript
为vue-router懒加载时下载js的过程中添加loading提示避免无响应问题
2018/04/03 Javascript
vue-cli3+typescript初体验小结
2019/02/28 Javascript
nodejs log4js 使用详解
2019/05/31 NodeJs
laravel-admin 与 vue 结合使用实例代码详解
2019/06/04 Javascript
VUE注册全局组件和局部组件过程解析
2019/10/10 Javascript
TensorFlow实现Batch Normalization
2018/03/08 Python
人脸识别经典算法一 特征脸方法(Eigenface)
2018/03/13 Python
Diango + uwsgi + nginx项目部署的全过程(可外网访问)
2018/04/22 Python
使用Python处理Excel表格的简单方法
2018/06/07 Python
python脚本执行CMD命令并返回结果的例子
2019/08/14 Python
Python安装依赖(包)模块方法详解
2020/02/14 Python
澳大利亚最好的厨具店:Kitchen Warehouse
2018/03/13 全球购物
局域网标准
2016/09/10 面试题
采购内勤岗位职责
2013/12/10 职场文书
最新的咖啡店创业计划书
2013/12/30 职场文书
什么样的创业计划书可行性高?
2014/02/01 职场文书
总经理任命书范本
2014/06/05 职场文书
我爱祖国演讲稿
2014/09/02 职场文书
2014年打非治违工作总结
2014/11/13 职场文书
Android实现图片九宫格
2022/06/28 Java/Android