Python基础学习(7)函数作用域与名称空间

文章目录

  • 一.认识函数对象
    • 1.函数被引用
    • 2.函数作为元素
    • 3.函数可以作为参数和返回值
  • 二,名称空间
    • 1.内建名称空间(存放内置函数)
    • 2.全局名称空间(Python定义在外层的名字)
    • 3.局部名称空间(存在函数内定义的名字)
  • 三,作用域
    • 1.global 提权
    • 2.nonlocal 降权
  • 四,匿名函数

Python基础学习(1)基本知识
Python基础学习(2)序列类型方法与数据类型转换
Python基础学习(3)进阶字符串(格式化输出)
Python基础学习(4)散列类型(无序序列)
Python基础学习(5)流程控制
Python基础学习(6)函数基础与函数参数
Python基础学习(7)函数作用域与名称空间
Python基础学习(8)函数进阶-闭包/装饰器
Python基础学习(9)迭代器/生成器

一.认识函数对象

1.函数被引用

数据名=函数名 # 把函数复制一份 给新的数据名
数据名=函数名() # 把函数返回值赋值给新的数据名

def Try_1():print('hhh')
a=Try_1
a()

2.函数作为元素

函数可以作为元素放在列表,元组,字典,集合中使用

def Try_1():print('hhh')
a=Try_1
list_1=[1,5,6,Try_1]
print(list_1[3])
list_1[3]()

<function Try_1 at 0x000001B2C936F3A0>
hhh

3.函数可以作为参数和返回值

def Try_1():print('hhh')
def Try_2(a):a()return a
Try_2(Try_1)()

二,名称空间

名称空间 – 存储变量名 函数名 模块名

内存数据 – 变量值 函数代码 模块代码

一共有三层结构

1.内建名称空间(存放内置函数)

生命周期: 随着Python程序启动而生成,在程序关闭时收回 清除所有数据
加载顺序: 最先被加载出来的
存放对象: 内置函数 print input type len max min 

2.全局名称空间(Python定义在外层的名字)

生命周期: 随着Python文件执行之前产生 运行完后销毁
加载顺序: 第二个被加载出来的
存放对象: 在Python外层写的代码 定义的变量名 函数名

3.局部名称空间(存在函数内定义的名字)

生命周期: 随着函数调用而产生 在结束调用时销毁
加载顺序: 在调用时才会被加载
存放对象: 在函数里定义的变量名 函数名 形参参数

三,作用域

作用域: 一个数据能够使用的范围

作用域分为: 全局作用域 局部作用域

全局作用域: 内建名称空间 全局名称空间
内置函数 外层定义的变量 函数名
公共WiFi 所有人都可以使用

局部作用域: 局部名称空间
函数内部的变量和函数名
独有wifi 只能我自己用

1.global 提权

提权: 让一个数据从局部变为全局
语法格式:
def 函数名():
global 变量名
操作变量
函数名()
print(变量)

def Try_1():global aa=10
Try_1()# 局部名称空间的创建 需要调用函数才可以生成对应的名称空间
print(a)# 把局部数据变为全局了

2.nonlocal 降权

降权: 将局部变量再深度局部化
nonlocal 关键字用于在嵌套函数中修改外围函数的局部变量

# 降权
def fun1():a = 1 # 这个a 在函数里算是公共的(全局)def fun2():nonlocal a # 把变量a霸道的抢过来 私有化a = 0fun2()print(a)fun1()

不同作用域的相同名也是不一样的

四,匿名函数

平时使用的函数==有名函数

匿名函数顾名思义=无名函数

匿名函数作用:不想取名 并且函数只用一次的时候使用

语法格式:
lambda 变量:操作

print((lambda a:print(a))('你好'))#操作返回
print((lambda a,b:a+b)(1,2))
talk=(lambda a:print(a))//给匿名函数赋名
talk('woshi')

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/734752.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数据库(一)初步认识数据库系统

什么是数据库&#xff1f; 表&#xff1a;以按行按列形式组织及展现的数据 如下便是一个表&#xff0c;也叫关系&#xff0c;描述了一批相互有关联关系的数据 数据库&#xff1a;起源于规范化表&#xff08;如成绩单&#xff09;的处理&#xff0c;简称DB&#xff0c;是相互有…

【计算机视觉】图像处理算法(形态学滤波篇)

来源&#xff1a;《OpenCV3编程入门》&#xff0c;怀念毛星云大佬&#x1f56f;️ 说明&#xff1a;本系列重点关注各种图像处理算法的原理、作用和对比 形态学滤波(1 ):腐蚀与膨胀 形态学槪述 数学形态学的概念&#xff1a; 数学形态学(Mathematical morphology)是立在格论…

git push 跟 git push origin master的区别

git push 和 git push origin master 在功能和使用上存在显著的区别。 git push 命令默认会推送当前分支到其对应的远程分支。这个操作是基于你的本地仓库配置进行的&#xff0c;它会自动识别你当前所在的分支以及该分支对应的远程仓库和远程分支。例如&#xff0c;如果你在 f…

《深度学习风暴:掀起智能革命的浪潮》

在当今信息时代,深度学习已经成为科技领域的一股强大力量,其应用领域涵盖了从医疗到金融再到智能交互等方方面面。随着技术的不断进步和应用的不断拓展,深度学习的发展势头愈发迅猛,掀起了一股智能革命的浪潮。本文将从基本原理、应用实例、挑战与未来发展方向、与机器学习…

CSS3基础2

CSS3 用户界面 resize 示例 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</title>…

关于 JVM

1、请你谈谈你对JVM的理解&#xff1f; JVM由JVM运行时数据区&#xff08;图示中蓝色框包含部分&#xff09;、执行引擎、本地库接口、本地方法库组成。 JVM运行时数据区&#xff0c;分为方法区、堆、虚拟机栈、本地方法栈和程序计数器。 1.方法区 Java 虚拟机规范中定…

在web中应用mybatis

搭建环境 数据库表的设计 create table bank(id bigint auto_increment primary key ,actno varchar(255) comment "账号",balance decimal(15,2) comment "余额" ); insert into bank values(1,act001,50000); insert into bank values(2,act002,0);添加…

期刊《International Journal of Information Security》

International Journal of Information Security 官网截图 出版选项 自由选择OA或者订阅 Aims and scope 投稿方向 Latest issue Volume 82 In progress (May 2024) This issue is in progress but contains articles that are final and fully citable. 有一篇: Vol…

数据分析-Pandas数据y轴双坐标设置

数据分析-Pandas数据y轴双坐标设置 数据分析和处理中&#xff0c;难免会遇到各种数据&#xff0c;那么数据呈现怎样的规律呢&#xff1f;不管金融数据&#xff0c;风控数据&#xff0c;营销数据等等&#xff0c;莫不如此。如何通过图示展示数据的规律&#xff1f; 数据表&…

YOLOv8旋转目标检测实战:训练自己的数据集

课程链接&#xff1a;https://edu.csdn.net/course/detail/39393 旋转目标检测是计算机视觉领域的一个高级任务&#xff0c;它在传统目标检测的基础上进一步发展。传统目标检测技术主要关注于识别和定位图像中的物体&#xff0c;通常以水平边界框(HBB)来标识目标物体的位置。而…

深入浅出计算机网络 day.1 概论① 信息时代的计算机网络

我想&#xff0c; 我不会暗下来的&#xff0c; 生命是周而复始的橙黄橘绿时 —— 24.3.9 内容概述 计算机网络的各类应用 计算机网络带来的负面问题 我国互联网发展情况 一、计算机网络的各类应用 1.信息浏览和发布 2.通信和交流 3.休闲和娱乐 4.资源共享…

文件包含漏洞初识

一、基础知识介绍 在web后台开发的时候&#xff0c;我们会使用PHP&#xff0c;Java这种代码&#xff0c;而在使用的过程中&#xff0c;我们经常会使用包含函数&#xff08;也就是调用&#xff09;&#xff0c;而很多时候&#xff0c;前端用户在选择浏览时会调用包含的文件这无…

python-三引号去除缩进

在Python中&#xff0c;三引号用于表示多行字符串或文档注释。三引号内的文本可以包含任何字符&#xff0c;包括换行符和引号。在使用三引号表示多行字符串时&#xff0c;Python会将三引号中的所有内容作为一个字符串处理。 缩进是Python中非常重要的一个概念&#xff0c;它用…

流浪动物救助小程序|基于微信小程序的流浪动物救助系统设计与实现(源码+数据库+文档)

流浪动物救助小程序目录 目录 基于微信小程序的流浪动物救助系统设计与实现 一、前言 二、系统设计 三、系统功能设计 1、用户信息管理 2、寻宠信息管理 3、动物求助管理 4、论坛信息管理 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐…

算法详解——leetcode150(逆波兰表达式)

欢迎来看博主的算法讲解 博主ID&#xff1a;代码小豪 文章目录 逆波兰表达式逆波兰表达式的作用代码将中缀表达式转换成后缀表达式文末代码 逆波兰表达式 先来看看leetcode当中的原题 大多数人初见逆波兰表达式的时候大都一脸懵逼&#xff0c;因为与平时常见的表达式不同&am…

el-table 插入输入框并进行校验

<template><div><el-form :model"list" ref"ruleForm"><el-table :data"list.tableData" style"width: 100%"><el-table-column prop"time" label"日期" width"180"><…

一周学会Django5 Python Web开发-Django5内置模板引擎-模板标签

锋哥原创的Python Web开发 Django5视频教程&#xff1a; 2024版 Django5 Python web开发 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili2024版 Django5 Python web开发 视频教程(无废话版) 玩命更新中~共计33条视频&#xff0c;包括&#xff1a;2024版 Django5 Python we…

HCIA-HarmonyOS设备开发认证V2.0-习题2

目录 习题一习题二坚持就有收获 习题一 # 判断题## 1.PWM占空比指的是低电平时间占周期时间的百分比。(错误)正确(True)错误(False)解题&#xff1a; - PWM占空比指的是高电平时间占周期时间的百分比## 2.UART是通用异步收发传输器&#xff0c;是通用串行数据总线&#xff0c;…

ROS2学习(七) Foxy版本ros2替换中间件。

在ros2使用的过程中&#xff0c;一开始选用的foxy版本&#xff0c;后来发现&#xff0c;foxy版本的ros2有很多问题。一个是foxy版本已经停止维护了。另一个问题是这个版本有很多bug, 后续的版本在功能实现上做了很大的改动&#xff0c;甚至说进行了重写。修复的一些问题&#x…

动态规划

动态规划 动态规划&#xff08;DP&#xff09;是一种对问题的状态空间进行分阶段、有顺序、不重复、决策性遍历的算法。关键与前提 重叠子问题&#xff1a;与递归、分治等一样&#xff0c;要具有同类子问题&#xff0c;用若干维状态表示。最优子结构&#xff1a;状态对应着一个…