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实现随机密码字典生成器示例
Apr 09 Python
Python中的深拷贝和浅拷贝详解
Jun 03 Python
python实现mysql的单引号字符串过滤方法
Nov 14 Python
使用python实现链表操作
Jan 26 Python
Python下载网络小说实例代码
Feb 03 Python
python自定义函数实现一个数的三次方计算方法
Jan 20 Python
python图像处理模块Pillow的学习详解
Oct 09 Python
Django1.11自带分页器paginator的使用方法
Oct 31 Python
tensorflow 自定义损失函数示例代码
Feb 05 Python
使用python 计算百分位数实现数据分箱代码
Mar 03 Python
Python自动化操作实现图例绘制
Jul 09 Python
Python datetime模块的使用示例
Feb 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
PHP个人网站架设连环讲(四)
2006/10/09 PHP
生成随机字符串和验证码的类的PHP实例
2013/12/24 PHP
查找php配置文件php.ini所在路径的二种方法
2014/05/26 PHP
ECSHOP完美解决Deprecated: preg_replace()报错的问题
2016/05/17 PHP
PHP常用的三种设计模式
2017/02/17 PHP
php获取给定日期相差天数的方法分析
2017/02/20 PHP
使用Post提交时须将空格转换成加号的解释
2013/01/14 Javascript
基于KMP算法JavaScript的实现方法分析
2013/05/03 Javascript
JavaScript中输出标签的方法
2014/08/27 Javascript
JavaScript实现从数组中选出和等于固定值的n个数
2014/09/03 Javascript
JavaScript中使用typeof运算符需要注意的几个坑
2014/11/08 Javascript
浅谈jQuery的offset()方法及示例分享
2015/07/17 Javascript
jQuery EasyUI框架中的Datagrid数据表格组件结构详解
2016/06/09 Javascript
Javascript中函数名.length属性用法分析(对比arguments.length)
2016/09/16 Javascript
vue拦截器实现统一token,并兼容IE9验证功能
2018/04/26 Javascript
Vue动态修改网页标题的方法及遇到问题
2019/06/09 Javascript
JS实现json数组排序操作实例分析
2019/10/28 Javascript
[01:50:49]DOTA2-DPC中国联赛 正赛 PSG.LGD vs Aster BO3 第三场 1月24日
2021/03/11 DOTA
python开发之字符串string操作方法实例详解
2015/11/12 Python
python中异常捕获方法详解
2017/03/03 Python
使用Python对SQLite数据库操作
2017/04/06 Python
python 实现对文件夹内的文件排序编号
2018/04/12 Python
python 将字符串中的数字相加求和的实现
2019/07/18 Python
Python Sympy计算梯度、散度和旋度的实例
2019/12/06 Python
详解CSS3原生支持div铺满浏览器的方法
2018/08/30 HTML / CSS
全球领先的中国制造商品在线批发平台:DHgate
2020/01/28 全球购物
什么是SCM(软件配置管理)
2014/08/16 面试题
小型女装店的创业计划书
2014/01/09 职场文书
组织鉴定材料
2014/06/02 职场文书
网吧消防安全责任书
2014/07/29 职场文书
大学生实习证明范文(5篇)
2014/09/18 职场文书
征用土地赔偿协议书
2014/09/26 职场文书
新员工入职欢迎词
2015/01/23 职场文书
军事博物馆观后感
2015/06/05 职场文书
《认识年月日》教学反思
2016/02/19 职场文书
Java 超详细讲解IO操作字节流与字符流
2022/03/25 Java/Android