python进阶知识点汇总

news2025/1/15 17:36:43

一、函数

1、函数的传参:

(1)值传递:将实际的参数复制一份传递给形参,函数中修改形参时,不会影响到实际参数;

def a(b,c=2):
    return b+c

print(a(10))
print(a(123,2))
print(a(2))

在这里插入图片描述
(2)引用传递:将实际参数的地址传递给形参,函数修改形参时,会影响到实际参数;

def a(b,d=[]):
    d.append(b)
    return d

print(a(10))
print(a(123,[]))
print(a('a'))

在这里插入图片描述
(3)不可变类型传参是值传递,可变类型参数传递是引用传递;

2、闭包

(1)必须有一个内嵌函数;
(2)内嵌函数必须引用外部函数的变量;
(3)外部函数的返回值必须是内嵌函数

def extend(a):
    def hello(b):
        return a*b
    return hello
hello=extend(2)
hello(6)

闭包的作用:

3、*args**kwargs的作用

(1)*args 发送一个非键值对的可变数量的参数列表给一个函数,*args会接受任意多个参数,并把这些参数作为元祖传递给函数;
(2)**kwargs存储可变的关键字参数,允许使用没有事先定义的参数名,将接收到任意多个关键字参数作为字典传递给函数;
(3)必须按照arg、*args*、*kwargs的顺序。

4、递归

(1)递归模型

def recursions(n):
    if n==1:
        # 退出条件
        return 1
    # 继续递归
    return n * recursions(n-1)

(2)递归深度

sys.getrecursionlimit()

5、函数和方法

如果是类调用的,需要穿self参数,则是函数(FunctionType),如果是对象调用的,不需要传self参数,这时他是一个方法(MethodType)

6、python变量的搜索顺序

本地作用域(Local)–>当前作用域被嵌入的本地作用域(Enclosing locals)–>全局/模块作用域(Global)–>内置作用域(Built-in)

二、模块:

1、os模块:

os模块是负责程序与操作系统的交互,提供了访问操作系统底层的接口
sys模块是负责python与python解释器的交互,提供了一系列的函数和变量,用于操控python时运行环境

os.getcwd() # 获取当前程序所在目录
os.name # 判断系统类型名称
os.path # 获取文件的属性信息
...

在这里插入图片描述
可以用subprocess模块执行shell脚本

2、__name__的作用:

  • 一个模块被另一个模块第一次引用时,其主程序将全部运行。如果想在模块被引入时,模块中的某一块程序不被执行,那么此时可以用__name__属性来使该程序块仅在该模块自身运行时被执行;
  • 每个模块都有一个__name__属性,当其值是__main__时,表明该模块在自身运行,否则是被引入

3、pickle模块的作用

(1)序列化后存入文件

pickle.dumps(对象,文件对象)

(2)从文件中反序列化对象

pickle.loads(文件对象)
  • 可以处理复杂的序列化语法(例如自定义的类的方法、游戏的存档)
  • 序列化的是对象,而不是内存地址

4、random模块

  • random.random()函数是这个模块中最常用的方法了,它会生成一个随机的浮点数,范围是在0.0~1.0之间。
  • random.uniform()正好弥补了上面函数的不足,它可以设定浮点数的范围,一个是上限,一个是下限。
  • random.randint()随机生一个整数int类型,可以指定这个整数的范围,同样有上限和下限值,python
    random.randint。
  • random.choice()可以从任何序列,比如list列表中,选取一个随机的元素返回,可以用于字符串、列表、元组等。
>>> random.choice ( ['apple', 'pear', 'peach', 'orange', 'lemon'] ) #随机选取字符串: 
'lemon'
  • random.shuffle()如果你想将一个序列中的元素,随机打乱的话可以用这个函数方法。
p = ["Python", "is", "powerful", "simple", "and so on..."] 
random.shuffle(p) 
print p 
#结果(因为随机,所以你的结果可能不一样。) 
#['powerful', 'simple', 'is', 'Python', 'and so on...'] 
p = ["Python", "is", "powerful", "simple", "and so on..."]
  • random.sample()可以从指定的序列中,随机的截取指定长度的片断,不作原地修改。

5、日志(logging)

(1)日志的级别
在这里插入图片描述
(2)logging.basicConfig()函数说明

logging.basicConfig(**kwargs)

在这里插入图片描述
python日志处理

6、python装饰器

提高了代码的复用性

(1)常用于:

  • 引入日志
  • 函数执行时间的计算
  • 执行函数前预备处理
  • 执行函数后的清理工作
  • 权限校验
  • 缓存

7、python构造器

构造方法也叫构造器

__init__

8、python生成器

(1)生成列表的方式:

  • 列表推导式(耗内存)
  • 生成器(一边循环一边计算),依赖于yeild

三、内置函数

1、map()函数

根据提供的函数对指定序列做映射
map(function,iterable,...)
print(list(map(str,[1,2,3,4,5,6,7,8,9])))

在这里插入图片描述

2、reduce()函数

reduce(function,iterable,[initializer])

3、filter()函数

把传入的函数依次作用域序列中的每个元素,然后根据函数返回值(True,False)进行过滤,决定是否保留该元素,函数返回值必须是True或者False

def isOdd(n):
    """ 判断奇数 """
    return n%2==1
f=filter(isOdd,[1,2,3,4,5,6,7])
print(list(f))

在这里插入图片描述

4、enumerate()函数

enumerate()用于将一个可遍历的数据对象(列表、元祖和字符串)组合成一个索引序列,同时列出数据和数据下标,该函数返回enumerate(枚举)对象

enumerate(一个序列、迭代器或者其他支持迭代的对象,[start=0])

5、zip()函数

以一个或多个序列作为参数,返回一个元祖的列表,并将这些序列中并排的元素配对,当传入的参数长度不同时,自动以最短的序列长度为准进行截取

a=[1,2,3]
b=[4,5,6,7]
print(list(zip(a,b)))
# 解压
a1,b1=zip(*zip(a,b))
print(a1,b1)

在这里插入图片描述

6、hasattr()、getattr()和setattr()

(1)hasattr():

hasattr(object,name)

判断一个对象中是否含有name属性或者name方法,返回bool值

(2)getattr()

hasattr(object,name,[default])

获取对象object的属性或者方法,若存在则打印出来,若不存在则打印默认值,如果返回的是对象的方法,那么打印的结果是方法的内存地址,如果需要运行这个方法,那么可以在后面添加括号

(3)setattr()

setattr(object,name,[default])

给对象属性赋值,若属性不存在,则先创建再赋值

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

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

相关文章

Gitlab添加组、创建用户和项目、权限管理

一、创建组 1、使用root管理员权限来创建组,一个组里面包含多个项目分支,可以将用户来添加到组里进行设置权限,不同的组有不同的权限。 2、输入群组名称、描述、和可见性级别,点击创建群组 二、创建用户 1、普通用户只能访问属于…

静态路由综合实验

目录 实验要求 实验步骤 1.子网划分 2.配置IP和环回 3.配置静态路由,实现全网可达 4.配置缺省路由,使R1-R4可以访问5.5.5.5/24 5.配置空接口防环 6.ping测试 实验要求 1.除R5的环回地址固定以外,整个其他所有网段基于192.168.1.0/2…

【C++】二叉搜索树BST

目录 1.二叉搜索树的性质2.二叉搜索树功能的实现1.二叉搜索树的框架2.插入3.查找4.删除(难点)解析 3.二叉搜索树功能的递归实现1.查找递归实现2.插入递归实现递归形式中新建节点的链接问题 3.删除的递归实现 4.二叉搜索树部分默认成员函数实现1.构造函数…

SpringBoot(8)日志监控

日志监控 监控的意义使用监控监控原理 自定义监控指标Metrics端点自定义端点 监控的意义 监控服务状态是否宕机监控服务运行指标(内存,虚拟机,线程,请求等)监控程序运行日志管理服务(服务上下线) 监控的实施方式 1.显示监控信息的服务器&am…

低功耗设计方法学——篇Ⅱ

引言 低功耗设计关乎ASIC芯片的性能稳定。对ASIC 特别是一些Soc芯片的设计有着重要的影响,随着集成规模的大幅度增加,芯片自身的功耗问题暴露也越来越明显。低功耗设计的需求和必要性也越来越值得关注。本文就《Low Power Methodology Manual For Syste…

逍遥自在学C语言 | 赋值运算符

前言 在C语言中,赋值运算符用于将一个值赋给变量 这个过程分为两个步骤: 计算赋值运算符右侧的表达式将结果赋给左侧的变量。 C语言提供了多个不同的赋值运算符,包括基本的赋值运算符、复合赋值运算符以及条件赋值运算符等 一、人物简介…

LeetCode121 买卖股票的最佳时机 遍历法和动态规划

题目地址:https://leetcode.cn/problems/best-time-to-buy-and-sell-stock/ 给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。 你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股…

Python爬虫之MongoDB

目录 一、Mongo概述 二、安装&下载 1.下载: 2.安装 三、基本命令 插⼊数据 查询数据 修改数据 删除数据 索引 四、Python与MongoDB交互 1.安装pymongo 2.使⽤ 一、Mongo概述 MongoDB是什么? MongoDB是⾮关系型数据库(No sql) 为啥需要…

无线传感网络课程作业 1-dijkstra算法计算最短路径并输出经过的节点

无线传感网络课程作业 1 仅供参考-如有需要可订阅专栏 题目有如下网络图: abc三个数以a=3,b=1,c=1为例 运行环境:anaconda3环境管理工具,Python 3.9.12,Windows 10 22H2算法实现原理流程i).

Java——二叉搜索树的后序遍历序列

题目链接 牛客在线oj题——二叉搜索树的后序遍历序列 题目描述 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则返回 true ,否则返回 false 。假设输入的数组的任意两个数字都互不相同。 数据范围: 节点数量 0≤n≤1000 …

PLECS的基本介绍

PLECS的基本介绍 一:PLECS的基本介绍简单说明二:多功能的辅助工具三:主要功能介绍1、独特的热分析功能2、功能强大的示波器3、极快的仿真速度4、强大的波形分析工具5、C 语言控制器6、丰富的元件库 一:PLECS的基本介绍简单说明 1&…

QMS-云质说质量 - 7 IATF 16949哪个条款严重不符合项最多?

云质QMS原创 转载请注明来源 作者:王洪石 引言 AIAG 《质量2020》报告的数据是否让你惊讶? AIAG与德勤合作发布的汽车行业《质量2020》报告指出,"OEMs和供应商都将问题解决和CSR(Customer Specific Requirement顾客特定要求…

What...MiniGPT-4居然开源了,提前感受 GPT-4 的图像对话能力

说在前面的话: 一个月前,OpenAI向外界展示了GPT-4如何通过手绘草图直接生成网站,令当时的观众瞠目结舌。 在GPT-4发布会之后,相信大家对ChatGPT的对话能力已有所了解。圈内的朋友们应该已经亲身体验过无论是文本生成、编写代码&…

涨点技巧:基于Yolov5/Yolov7的困难样本挖掘---LRM loss,提升难样本检测精度

1.hard example mining(困难样本挖掘)✨✨✨ 困难例挖掘方法通常可以提高目标检测器的性能,因为它受到不平衡训练集的影响。为了通过RoI正确地挖掘困难例,引入了在线困难例挖掘(OHEM)方法[15]。该方法建议只考虑对反向传播最有利的RoI。给出最高损失值的RoI被认为是最难的…

【汽车品牌案例 Objective-C语言】

一、刚才,我给大家说了一下这个单元格的重用,接下来,我给大家再做一个案例, 1.再做一个什么案例呢,还是显示那个汽车品牌, 咱们上午是不是做过一个那个汽车品牌的展示了,做过那个展示,那是简单的一个展示,咱们再做一个,使用另外一个不同的一个plist文件,car_total.…

必应,百度,神马头条,搜狗专用站长seo推送工具大全

软件介绍: 百度开始打击滥用api问题,针对这个问题已经开发了拟人推送系列功能,放心使用。 五合一高效推送软件,目前支持百度,神马,必应,搜狗,头条,谷歌六大搜索引擎同步…

setup,ref,reactive

初识setup 1.理解:Vue3.0中一个新的配置项,值为一个函数。 2.setup是所有Composition API(组合API)“表演的舞台”。 3.组件中所用到的:数据、方法等等,均要配置在setup中。 4.setup函数的两种返回值: 1.若返回一个对象,则对象中的属性、…

IDEA(七) 使用UML类图

目录 1.相关快捷键1.1 查看快捷键1.2 其他快捷键1.3 分析类图1.4 定制展示类中的内容1.5 适配窗口和1:1展示1.6 定制布局1.7 其他设置 1.相关快捷键 1.1 查看快捷键 Ctrl Alt U :以弹窗的形式查看UML类图。Ctrl Shift Alt U :以标签的形式查看UML…

C learning_9 (函数篇)

目录 函数 函数的概念 函数的作用 函数的分类 函数的参数 函数的调用 函数 函数的概念 概念:C语言中的函数是一种封装了一定功能的代码块,可以在程序的任意位置调用。 返回值类型 函数名(参数列表) { 函数体 return 返回值; } 1.返回值类型指定了…

Vue的路由实现:hash模式 和 history模式原理及区别

目录标题 1、hash模式2、history模式 Vue-Router有两种模式: ** hash 模式和 history**模式。默认的路由模式是hash模式。 1、hash模式 简介:hash模式是开发中默认的模式,它的URL带着一个#,例如:http://www.abc.com/#/vue,它的…