python学习day26笔记
2021/7/5 22:22:36
本文主要是介绍python学习day26笔记,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
匿名函数
匿名函数就是没有名字的函数
为何要用匿名函数
用于临时使用一次的场景 通常与其他函数搭配使用
如何定义匿名函数
lambda关键字
lambda 形参:函数内容 lambda x,y:x+y
调用匿名函数
1.(蠢) f = lambda x,y:x+y 2. (lambda x,y:x+y)(1,2) 例: salaries = { 'axx':1000, 'bxx':10000, 'cxx':100000 } print(max(salaries,key=lambda name:salaries[name])) # max将字典内的k值传给key里函数的形参,得到的返回值再进行max找到最大值,得到最大值对应的k值 print(min(salaries,key=lambda name:salaries[name])) # 与max同理 print(sorted(salaries,key=lambda name:salaries[name])) # sorted默认从小到大排序 其他与max同理 names = ['lxx','hxx_vip','wxx_vip'] # 下面的一般不使用,只是为了反映出函数式编程的思想 map(lambda name:name+'_vip',names) # 直接输出是内存地址 # res=[name+'_vip' for name in names] filter(lambda name:name.endswith('_vip'),names) # 直接输出是内存地址 # res=[name for name in names if name.endswith('_vip')] from functools import reduce reduce(lambda x,y:x+y,[1,2,3],100) # 将其中数据累加,可以是字符串也可以是整型浮点型,必须是同一数据类型
面向过程编程
编程思想
过程就是流程,即先干什么再干什么 基于该思想写程序就好比在设计一条条的流水线 优点:复杂的问题流程化,进而简单化 缺点:牵一发而动全身,扩展性差
在哪里使用
1.实现基础的功能 2.构建程序的框架 # 框架即软件的半成品
模块介绍
模块本质上就是一个工具,它本身不能达成需求
自定义模块
1.一个py文件可以当做一个模块 2.包就是一个存放有__init__.py文件的文件夹,包的本质就是一个模块
模块的三种来源
1.自带的 内置 标准库2.第三方的 pip3 install 第三方库3.自定义的
导入模块
首次导入模块发生了两件事
import spam 1.会触发spam.py的运行,同时会在内存中产生一个模块的名称空间,用来存放模块运行过程中产生的名字 2.会在当前文件的名称空间中产生一个名字spam,该名字指向模块的名称空间 # 后续的导入引用之前已经产生的名称空间
整体流程
名称空间的关系是在定义阶段生成的,与调用阶段没关系 spam.money # 指名道姓的问spam里的money spam.read1() # 指名道姓的执行spam里的read1函数 被调用模块内的参数只能调用该模块文件内的数据
import语法
import指向大空间,里面包含了你需要的模块 起别名 import spam as a # 给spam起别名叫a import spam as a,os as b 一行导入多个 import spam,os 使用时需要加上前缀,例如:spam.money
from ... import ...语法
from ... import ...直接指向你需要的模块 from spam import money 使用时不需要加前缀 如果在调用money后再给money定义,新的定义会覆盖掉之前的调用 from spam import * 将模块内全部调用 # 极易容易与当前变量冲突 在模块内写入:__all__ = ['money','read1'] # 列表内输入字符串格式的变量名 再调用from spam import *,只能导入__all__内的内容
循环导入问题
'''!!!尽量不要使用循环导入!!!''' 例子: 有个m1.py文件,内容是: from m2 import y print(y) x = 3 有个m2.py文件,内容是: from m1 import x print(x) y = 4 此时在一个新的py文件内import m1 此时会报错 导入具体流程: 新的py文件import m1,导入时会触发m1.py的运行,m1.py运行时第一行代码是from m2 import y,又触发了m2的运行,此时要等m2运行完毕后m1才会运行下一步内容,所以此时m1只有from m2 import y这一行代码,但是m2的运行需要调用m1的x变量,此时m1已经存在内存里了,所以m2直接问内存的m1要x变量,很显然要不到,所以报错 解决方法1: 将m2需要的x代码放在导入m2之前 解决方法2: 将导入m2那串代码变成函数 最好的解决方法: 不使用循环导入,将需要被两边调用的值放进另一个模块内 m1导入os模块,添加代码os.environ['x']=str(x) m2导入os模块,添加代码os.environ['y']=str(y) 这时就会将xy放进共用的os模块内
模块搜索路径
模块搜索路径,优先级从高到低 1.内存 2.内置 3.sys.path(环境变量的一种,是个文件夹,里面包含了很多文件夹) sys.path内的第一个文件夹就是当前执行程序的文件夹 自定义模块不能和内置模块重名 正确使用自定义模块: sys.path.append(r'导入模块的路径') 将需要的模块导入到环境变量 如果需要的模块在当前文件夹的某个文件夹内: from aaa.bbb.ccc import spam .是文件路径分隔符,指导入当前路径下aaa内bbb内ccc内的spam
name
__name__是一个内置的函数,如果该文件被运行了,__name__='__main__',通常用在自动启动模块内参数: if __name__=='__main__': f1()
这篇关于python学习day26笔记的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-24Python编程基础详解
- 2024-11-21Python编程基础教程
- 2024-11-20Python编程基础与实践
- 2024-11-20Python编程基础与高级应用
- 2024-11-19Python 基础编程教程
- 2024-11-19Python基础入门教程
- 2024-11-17在FastAPI项目中添加一个生产级别的数据库——本地环境搭建指南
- 2024-11-16`PyMuPDF4LLM`:提取PDF数据的神器
- 2024-11-16四种数据科学Web界面框架快速对比:Rio、Reflex、Streamlit和Plotly Dash
- 2024-11-14获取参数学习:Python编程入门教程