《0基础》学习Python——第十一讲

一、lambda 匿名函数

        lambda函数是一种匿名函数。它是一种快速定义单行函数的方法。与常规函数不同,lambda函数没有名称,也没有使用def关键字来定义。lambda函数通常用于一些简单的函数,可以在代码中快速定义和使用,而不需要为其定义一个正式的函数。

        其中,arguments是函数的参数,可以有多个参数,用逗号分隔。expression是函数的表达式,它是函数的返回结果。例如:

add = lambda x, y: x + y
print(add(5, 3))  # 输出结果为8,其中5和3为参数,分别输给x和y

li = [1, 2, 3, 4]
    new_li = []
f = lambda x: x + 1
    print(f(1))
    new_li = [f(i) for i in li]
    print(new_li)

可分解为以下代码
li = [1, 2, 3, 4]
new_li = []
def summ(x):
    x=x+1
    return x

if __name__== "__main__":
    summ(1)
    print(summ(1))

new_li=[]
for i in li:
    new_li.append(summ(i))
print(new_li)

        优点:它们可以用于快速定义简单的函数,而不需要为其定义一个正式的函数。

        缺点:它们的功能有限,只能包含一个表达式。如果需要在函数中包含多条语句或复杂的逻辑,就需要使用常规的函数定义。

二、映射函数(map)和规约函数(reduce)

        mapreduce是Python中的两个常用高阶函数,用于对序列进行操作。

        1、map:映射

        函数接收一个函数和一个可迭代对象作为参数,将函数应用于可迭代对象的每个元素,并返回一个结果列表。它对序列中的每个元素应用同一个函数,并返回一个新的列表,列表中的每个元素是原列表中对应元素经过函数处理后的结果。例如:

numbers = [1, 2, 3, 4, 5]
squared_numbers = map(lambda x: x**2, numbers)
print(list(squared_numbers))  # 输出结果为 [1, 4, 9, 16, 25]

        2、reduce:规约

        函数接受一个函数和一个可迭代对象作为参数,将可迭代对象中的元素依次应用到函数上,得到一个结果。然后将该结果与下一个元素结合,再次应用函数,以此类推,直到遍历完可迭代对象,最终返回一个聚合结果。例如:

from functools import reduce

numbers = [1, 2, 3, 4, 5]
product = reduce(lambda x, y: x * y, numbers)
print(product)  # 输出: 120

上部分代码,即通过匿名函数给予参数想,x,y的方法是x*y,然后通过规约函数赋予x,y的值为列表numbers中的元素,其工作方式为:x=1,y=2,然后x*y=1*2等于2,然后把这个2赋予给x,再把列表中的第三个数3赋予给y,继续进行x*y,等于2*3=6,然后再继续把6赋予给x,再把列表中的4赋予给y,继续进行x*y,直至结束。

三、命名空间namespace(局部、全局、内置)

        命名空间(Namespace)是从名称到对象的映射,大部分的命名空间都是通过 Python 字典来实现的,其提供了在项目中避免名字冲突的一种方法。各个命名空间是独立的,没有任何关系的,所以一个命名空间中不能重名,但不同的命名空间是可以重名而没有任何影响。

        1、局部函数内部找变量

        2、全局:在整个代码之前找变量

        3、内置Python内置的模块去寻找

        例如在一个计算机系统中,一个文件夹(目录)中可以包含多个文件夹,每个文件夹中不能有相同的文件名,但不同文件夹中的文件可以重名

Python中一般有三种命名空间:

        1、内置名称(built-in names):Python 语言内置的名称,比如函数名 abs、chr 和异常名称

BaseException、Exception 等等

        2、全局名称(global names):模块中定义的名称,记录了模块的变量,包括函数、类、其

它导入的模块、模块级的变量和常量

        3、局部名称(local names):函数中定义的名称,记录了函数的变量,包括函数的参数和局部定义的变量(类中定义的也是)

命名空间查找顺序:

        假设我们要使用变量 money,则 Python 的查找顺序为

        局部的命名空间 -> 全局命名空间 -> 内置命名空间,如果找不到变量 money,它将放弃查找并引发一个错误

命名空间的生命周期:

        命名空间的生命周期取决于对象的作用域,如果对象执行完成,则该命名空间的生命周期就结束,因此无法从外部命名空间访问内部命名空间的对象

四、作用域(L、E、G、B)

        在一个 python 程序中,直接访问一个变量,会从内到外依次访问所有的作用域直到找到,否则会报未定义的错误。

        Python 的作用域一共有4种:

                1、L(Local):局部作用域,包含局部变量,比如一个函数/方法内部

                2、E(Enclosing):嵌套作用域,包含了非局部(non-local)也非全局(non-global)的变量

                3、G(Global):全局作用域最外层,比如当前模块的全局变量

                4、B(Built-in):内置作用域,包含内建变量/关键字等,最后被搜索

        在局部找不到,便会去局部外的局部找(例如闭包),再找不到就会去全局找,再者去内置中找。

        Python 中只有模块(module),类(class)以及函数(def、lambda)才会引入新的作用域,其它的代码块(如 if/elif/else/、try/except、for/while等)是不会引入新的作用域的,也就是说这些语句内定义的变量,外部也可以访问

        1、全局作用域(Global scope):

        在模块中定义的变量具有全局作用域,可以在模块的任何位置访问。

x = 10  # 全局作用域

def foo():
    print(x)  # 可以访问全局作用域中的变量
    
foo()  # 输出: 10

        2、局部作用域(Local scope):

        在函数或类方法中定义的变量具有局部作用域,只能在定义它们的函数或方法内部访问。

def foo():
    y = 20  # 局部作用域
    
    def bar():
        print(y)  # 可以访问外部函数的变量
        
    bar()
    
foo()  # 输出: 20

        3、嵌套作用域(Enclosing scope):

        在嵌套函数中,内部函数可以访问外部函数的变量。

def outer():
    z = 30  # 嵌套作用域
    
    def inner():
        print(z)  # 可以访问外部函数的变量
        
    inner()
    
outer()  # 输出: 30

        4、内置作用域(Built-in scope):

        在Python解释器中预定义的变量和函数具有内置作用域,可以在任何地方访问。

print(len([1, 2, 3]))  # 内置函数len()可以在任何地方访问

        在Python中,变量的作用域遵循LEGB原则,即在访问变量时,首先在局部作用域查找,然后在嵌套作用域中查找,接着在全局作用域中查找,最后在内置作用域中查找。如果在任何作用域中都找不到变量,则抛出NameError异常。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Hive的基本操作(查询)

1、基础查询 基本语法 select 字段列表|表达式|子查询 from 表(子查询|视图|临时表|普通表) where [not] 条件A and|or 条件B --先:面向原始行进行筛选 group by 字段A[,字段B,...] > 分组【去重处理】 having 聚合条件(非原始字段条件) --再&#x…

《梦醒蝶飞:释放Excel函数与公式的力量》12.3 DMIN函数

第12章:数据库函数 第三节 12.3 DMIN函数 12.3.1 简介 DMIN函数是Excel中的一个数据库函数,用于返回数据库或数据表中特定条件下某字段的最小值。DMIN函数在处理大规模数据、数据筛选和分析时非常有用。 12.3.2 语法 DMIN(database, field, criteri…

MYSQL 四、mysql进阶 9(数据库的设计规范)

一、为什么需要数据库设计 二、范 式 2.1 范式简介 在关系型数据库中,关于数据表设计的基本原则、规则就称为范式。 可以理解为,一张数据表的设计结 构需要满足的某种设计标准的 级别 。要想设计一个结构合理的关系型数据库,必须满足一定的…

LLM量化--AWQ论文阅读笔记

写在前面:近来大模型十分火爆,所以最近开启了一波对大模型推理优化论文的阅读,下面是自己的阅读笔记,里面对文章的理解并不全面,只将自己认为比较重要的部分摘了出来,详读的大家可以参看原文 原论文地址&am…

Leetcode—146. LRU 缓存【中等】(shared_ptr、unordered_map、list)

2024每日刷题(143) Leetcode—146. LRU 缓存 先验知识 list & unordered_map 实现代码 struct Node{int key;int value;Node(int key, int value): key(key), value(value) {} };class LRUCache { public:LRUCache(int capacity): m_capacity(capa…

axios以post方式提交表单形式数据

某些后端框架请求接口必须走form表单提交的那种形式&#xff0c;但前端很少有<form action"接口地址" method"post"></form>这种写法去提交表单数据&#xff0c;所以前端需要用axios模拟一个表单提交接口。 Content-Type 代表发送端&#xff0…

【.NET全栈】ASP.NET开发web应用——ASP.NET中的样式、主题和母版页

文章目录 前言一、在ASP.NET中应用CSS样式1、创建CSS样式&#xff08;1&#xff09;内联样式&#xff08;2&#xff09;内部样式表&#xff08;3&#xff09;外部样式表 2、应用CSS样式&#xff08;1&#xff09;菜鸟教程-简单例子&#xff08;2&#xff09;菜鸟教程-用户界面&…

零售门店收银系统源码

php收银系统源码-CSDN博客文章浏览阅读268次&#xff0c;点赞6次&#xff0c;收藏4次。收银系统源码https://blog.csdn.net/qh716/article/details/140431477 1.系统开发语言 核心开发语言: PHP、HTML5、Dart后台接口: PHP7.3后合管理网站: HTML5vue2.0element-uicssjs线下收…

【区块链 + 智慧政务】涉税行政事业性收费“e 链通”项目 | FISCO BCOS应用案例

国内很多城市目前划转至税务部门征收的非税收入项目已达 17 项&#xff0c;其征管方式为行政主管部门核定后交由税务 部门征收。涉税行政事业性收费受限于传统的管理模式&#xff0c;缴费人、业务主管部门、税务部门、财政部门四方处于 相对孤立的状态&#xff0c;信息的传递靠…

校园网自动登录脚本【Windows 10】

如果要使用校园网&#xff0c;必须打开浏览器输入校园网地址&#xff0c;之后输入账号密码登录。实验室电脑绝大多数情况下应该处于联网状态&#xff0c;但不幸的是&#xff0c;我深会限制校园网客户端数量&#xff0c;一旦有新设备接入&#xff0c;很可能实验室电脑就会断网。…

实现给Nginx的指定网站开启basic认证——http基本认证

一、问题描述 目前我们配置的网站内容都是没有限制&#xff0c;可以让任何人打开浏览器都能够访问&#xff0c;这样就会存在一个问题&#xff08;可能会存在一些恶意访问的用户进行恶意操作&#xff0c;直接访问到我们的敏感后台路径进行操作&#xff0c;风险就会很大&#xff…

wps批量删除空白单元格

目录 原始数据1.按ctrlg键2.选择“空值”&#xff0c;点击“定位”3. 右击&#xff0c;删除单元格修改后的数据 原始数据 1.按ctrlg键 2.选择“空值”&#xff0c;点击“定位” 如图所示&#xff0c;空值已被选中 3. 右击&#xff0c;删除单元格 修改后的数据

数据结构—链式二叉树-C语言

代码位置&#xff1a;test-c-2024: 对C语言习题代码的练习 (gitee.com) 一、前言&#xff1a; 在现实中搜索二叉树为常用的二叉树之一&#xff0c;今天我们就要通过链表来实现搜索二叉树。实现的操作有&#xff1a;建二叉树、前序遍历、中序遍历、后序遍历、求树的节点个数、求…

AI音乐创作:一键生成,打造你的专属乐章

文章目录 &#x1f34a;AI音乐创作&#xff1a;一键生成&#xff0c;打造你的专属乐章1 市面上的AI音乐应用1.1 Suno AI1.2 网易天音 2 AI音乐创作的流程2.1 AI音乐风格/流派2.2 AI音乐的结构顺序2.3 使用KIMI生成AI音乐歌词2.4 选择AI音乐乐器2.5 书写AI音乐提示词2.5.1 方法一…

Java NIO 比传统 IO 强在哪里?

这里先给大家展示一副传统 IO 和 NIO 的对比图&#xff0c;感受一下。 传统IO基于字节流或字符流&#xff08;如 FileInputStream、BufferedReader 等&#xff09;进行文件读写&#xff0c;以及使用Socket和ServerSocketChannel进行网络传输。 NIO 使通道&#xff08;Channel&a…

【过题笔记】 7.15

Array Without Local Maximums 算法&#xff1a;动态规划 简要思路&#xff1a; 考虑左边的数跟当前位置的关系&#xff0c;不难想到只有三种情况&#xff1a;大于&#xff0c;小于&#xff0c;等于。 于是可以得到状态 f [ i ] [ j ] [ 0 / 1 / 2 ] f[i][j][0/1/2] f[i][j][…

ubuntu22.04安装SecureCRT8.7.3,完成顺利使用

材料准备 scrt-sfx安装包 &#xff0c; securecrt_linux_crack.pl 补丁脚本&#xff0c;和两个依赖库 其中securecrt_linux_crack.pl是找的专门适合 8.7.3版本的&#xff0c;网上很多版本的crack.pl只能打补丁以前的老版本。 而更老版本的SecureCRT对ubuntu22支持更不好&#…

数据库使用SSL加密连接

简介 数据库开通SSL加密连接是确保数据传输过程中安全性的关键措施&#xff0c;它通过加密数据、验证服务器身份、保护敏感信息、维护数据完整性和可靠性&#xff0c;同时满足行业标准和法规要求&#xff0c;进而提升用户体验和信任度&#xff0c;为企业的数据安全和业务连续性…

HTML5+CSS3小实例:纯CSS实现奥运五环

实例:纯CSS实现奥运五环 技术栈:HTML+CSS 效果: 源码: 【HTML】 <!DOCTYPE html> <html lang="zh-CN"> <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-sca…

1.CATIA:CAA调用Excel接口

生成调用Excel的头文件 参考如下进行excel头文件的生成: 如何使用vs2022通过excel.exe生成VC、C++能够使用的头文件 添加如下的接口: #include "CApplication.h" #include "CWorkbook.h" #include "CWorkbooks.h" #include "CWorkshee…