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接收多播数据的代码
Mar 01 Python
Python打包可执行文件的方法详解
Sep 19 Python
使用Python对Access读写操作
Mar 30 Python
python使用matplotlib模块绘制多条折线图、散点图
Apr 26 Python
解决Python下json.loads()中文字符出错的问题
Dec 19 Python
详解python:time模块用法
Mar 25 Python
Python集中化管理平台Ansible介绍与YAML简介
Jun 12 Python
基于numpy中的expand_dims函数用法
Dec 18 Python
Python对称的二叉树多种思路实现方法
Feb 28 Python
keras之权重初始化方式
May 21 Python
Python下使用Trackbar实现绘图板
Oct 27 Python
Django通过设置CORS解决跨域问题
Nov 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
ThinkPHP3.1新特性之对Ajax的支持更加完善
2014/06/19 PHP
PHP5.3安装Zend Guard Loader图文教程
2014/09/29 PHP
php将文件夹打包成zip文件的简单实现方法
2016/10/04 PHP
php安装php_rar扩展实现rar文件读取和解压的方法
2016/11/17 PHP
php模仿qq空间或朋友圈发布动态、评论动态、回复评论、删除动态或评论的功能(中)
2017/06/11 PHP
通过PHP实现用户注册后邮箱验证激活
2020/11/10 PHP
javascript框架设计之类工厂
2015/06/23 Javascript
JavaScript原型及原型链终极详解
2016/01/04 Javascript
学习JavaScript设计模式之享元模式
2016/01/18 Javascript
封装属于自己的JS组件
2016/01/27 Javascript
浅析JavaScript中浏览器的兼容问题
2016/04/19 Javascript
js实现无缝滚动图(可控制当前滚动的方向)
2017/02/22 Javascript
详解设置Webstorm 利用babel将ES6自动转码成ES5
2017/12/20 Javascript
elementUI同一页面展示多个Dialog的实现
2020/11/19 Javascript
JavaScript中条件语句的优化技巧总结
2020/12/04 Javascript
Django中传递参数到URLconf的视图函数中的方法
2015/07/18 Python
django批量导入xml数据
2016/10/16 Python
Python 正则表达式入门(中级篇)
2016/12/07 Python
python return逻辑判断表达式实现解析
2019/12/02 Python
Python多线程Threading、子线程与守护线程实例详解
2020/03/24 Python
浅谈python 中的 type(), dtype(), astype()的区别
2020/04/09 Python
如何使用python写截屏小工具
2020/09/29 Python
html5 touch事件实现触屏页面上下滑动(二)
2016/03/10 HTML / CSS
html5中canvas图表实现柱状图的示例
2017/11/13 HTML / CSS
DKNY品牌官网:纽约大都会时尚风格
2016/10/20 全球购物
德国购买健身器材:AsVIVA
2017/08/09 全球购物
以色列的身体护理及家居香薰品牌:Sabon NYC
2018/02/23 全球购物
韩国演唱会订票网站:StubHub韩国
2019/01/17 全球购物
网游商务专员求职信
2013/10/15 职场文书
村级四风对照检查材料
2014/08/24 职场文书
优秀员工自荐书
2015/03/06 职场文书
军训心得体会范文(2016最新篇)
2016/01/11 职场文书
Canvas如何做个雪花屏版404的实现
2021/09/25 HTML / CSS
Python函数对象与闭包函数
2022/04/13 Python
windows10 家庭版下FTP服务器搭建教程
2022/08/05 Servers
Java Redisson多策略注解限流
2022/09/23 Java/Android