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 相关文章推荐
详解Python2.x中对Unicode编码的使用
Apr 03 Python
Python中的日期时间处理详解
Nov 17 Python
对json字符串与python字符串的不同之处详解
Dec 19 Python
使用Python进行体育竞技分析(预测球队成绩)
May 16 Python
python3实现猜数字游戏
Dec 07 Python
python实现手势识别的示例(入门)
Apr 15 Python
Python过滤掉numpy.array中非nan数据实例
Jun 08 Python
TensorFlow Autodiff自动微分详解
Jul 06 Python
Pandas替换及部分替换(replace)实现流程详解
Oct 12 Python
Python调用系统命令os.system()和os.popen()的实现
Dec 31 Python
matplotlib实现数据实时刷新的示例代码
Jan 05 Python
Python3使用Qt5来实现简易的五子棋小游戏
May 02 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
QueryPath PHP 中的jQuery
2010/04/11 PHP
php通过淘宝API查询IP地址归属等信息
2015/12/25 PHP
windows 2008r2+php5.6.28环境搭建详细过程
2019/06/18 PHP
cnblogs 代码高亮显示后的代码复制问题解决实现代码
2011/12/14 Javascript
使用js写的一个简易的投票
2013/11/27 Javascript
浅谈jQuery中setInterval()方法
2015/07/07 Javascript
Javascript控制div属性动态变化实例分析
2015/10/08 Javascript
使用jquery datatable和bootsrap创建表格实例代码
2017/03/17 Javascript
ES6中的箭头函数实例详解
2017/04/06 Javascript
AngularJS 异步解决实现方法
2017/06/12 Javascript
laravel-admin 与 vue 结合使用实例代码详解
2019/06/04 Javascript
微信小程序如何刷新当前界面的实现方法
2019/06/07 Javascript
10种JavaScript最常见的错误(小结)
2019/06/21 Javascript
vue中进行微博分享的实例讲解
2019/10/14 Javascript
仿照Element-ui实现一个简易的$message方法
2020/09/14 Javascript
vue+canvas实现拼图小游戏
2020/09/18 Javascript
[59:42]Secret vs Alliacne 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/17 DOTA
Python获取网页上图片下载地址的方法
2015/03/11 Python
Python实现的括号匹配判断功能示例
2018/08/25 Python
Python当中的array数组对象实例详解
2019/06/12 Python
python mysql断开重连的实现方法
2019/07/26 Python
在 Windows 下搭建高效的 django 开发环境的详细教程
2020/07/27 Python
pycharm 使用anaconda为默认环境的操作
2021/02/05 Python
Snapfish英国:在线照片打印和个性化照片礼品
2017/01/13 全球购物
德国宠物用品、宠物食品及水族馆网上商店:ZooRoyal
2017/07/09 全球购物
亚马逊印度站:Amazon.in
2017/10/15 全球购物
关于Java String的一道面试题
2013/09/29 面试题
行政文员岗位职责
2013/11/08 职场文书
军训口号
2014/06/13 职场文书
双拥工作宣传标语
2014/06/26 职场文书
未中标通知书
2015/04/17 职场文书
2015年支教教师工作总结
2015/07/22 职场文书
启动Tomcat时出现大量乱码的解决方法
2021/06/21 Java/Android
PHP设计模式(观察者模式)
2021/07/07 PHP
golang 语言中错误处理机制
2021/08/30 Golang
浅谈Redis的keys命令到底有多慢
2021/10/05 Redis