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 字典dict使用介绍
Nov 30 Python
Python中map,reduce,filter和sorted函数的使用方法
Aug 17 Python
Python按行读取文件的实现方法【小文件和大文件读取】
Sep 19 Python
python 连接sqlite及简单操作
Jun 30 Python
速记Python布尔值
Nov 09 Python
python3.6 实现AES加密的示例(pyCryptodome)
Jan 10 Python
python实现猜数字小游戏
Mar 24 Python
解决python写入带有中文的字符到文件错误的问题
Jan 31 Python
python实现列表中最大最小值输出的示例
Jul 09 Python
使用 Django Highcharts 实现数据可视化过程解析
Jul 31 Python
Python CategoricalDtype自定义排序实现原理解析
Sep 11 Python
python更新数据库中某个字段的数据(方法详解)
Nov 18 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下的PHP5.0安装配制详解
2006/09/05 PHP
PHP mkdir()无写权限的问题解决方法
2014/06/19 PHP
PHP获取网站中各文章的第一张图片的代码示例
2016/05/20 PHP
PHP中Static(静态)关键字功能与用法实例分析
2019/04/05 PHP
PHP常用字符串输出方法分析(echo,print,printf及sprintf)
2021/03/09 PHP
JavaScript 乱码问题
2009/08/06 Javascript
javascript getElementsByClassName 和js取地址栏参数
2010/01/02 Javascript
javascript创建createXmlHttpRequest对象示例代码
2014/02/10 Javascript
node.js中的console用法总结
2014/12/15 Javascript
基于javascript简单实现对身份证校验
2021/01/25 Javascript
Angular-Ui-Router+ocLazyLoad动态加载脚本示例
2017/03/02 Javascript
JavaScript实现省市联动过程中bug的解决方法
2017/12/04 Javascript
angular 实现的输入框数字千分位及保留几位小数点功能示例
2018/06/19 Javascript
详解Eslint 配置及规则说明
2018/09/10 Javascript
在vue中更换字体,本地存储字体非引用在线字体库的方法
2018/09/28 Javascript
Node.js的进程管理的深入理解
2019/01/09 Javascript
仿ElementUI实现一个Form表单的实现代码
2019/04/23 Javascript
DatePickerDialog 自定义样式及使用全解
2019/07/09 Javascript
vue3.0自定义指令(drectives)知识点总结
2020/12/27 Vue.js
Python 迭代器与生成器实例详解
2017/05/18 Python
Django中使用极验Geetest滑动验证码过程解析
2019/07/31 Python
PyTorch中Tensor的数据统计示例
2020/02/17 Python
python实现拼接图片
2020/03/23 Python
Django实现简单的分页功能
2021/02/22 Python
pytorch 把图片数据转化成tensor的操作
2021/03/04 Python
介绍CSS3使用技巧5个
2009/04/02 HTML / CSS
CSS Grid布局教程之网格单元格布局
2014/12/30 HTML / CSS
利用html5的websocket实现websocket聊天室
2013/12/12 HTML / CSS
您的网上新华书店:文轩网
2016/08/24 全球购物
香港士多网上超级市场:Ztore
2021/01/09 全球购物
食堂员工工作职责
2013/12/18 职场文书
运动会邀请函范文
2014/02/06 职场文书
员工规章制度范本
2015/08/07 职场文书
小学一年级班主任工作经验交流材料
2015/11/02 职场文书
如何理解及使用Python闭包
2021/06/01 Python
MongoDB日志切割的三种方式总结
2021/09/15 MongoDB