python进阶知识点汇总

2023-11-09

一、函数

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])

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

python进阶知识点汇总 的相关文章

随机推荐

  • C语言中signal函数简介及使用

    signal h是C标准函数库中的信号处理部分 定义了程序执行时如何处理不同的信号 信号用作进程间通信 报告异常行为 如除零 用户的一些按键组合 如同时按下Ctrl与C键 产生信号SIGINT C 中的对应头文件是csignal C语言标准
  • Jenkins Android项目编译配置(完整版)

    Jenkins编译项目配置 环境要求 Jenkins准备 安装 启动 初始化 全局配置 全局工具 Global Tool Configuration 凭据 项目示例 General 源码管理 构建触发器 构建环境 构建 构建后操作 需要的插
  • C++ 函数覆盖

    C 函数覆盖 在派生类和基类中都定义了相同的函数 如果使用派生类的对象调用这个函数 派生类的函数就会被执行 这在 C 中称为函数覆盖 派生类中的函数覆盖基类中的函数 示例 1 C 函数覆盖 include
  • cblas_sgemm和cublasSgemm参数详解

    机器学习最核心的底层运算肯定是矩阵乘法无疑了 为了让矩阵乘法执行更快 大家也是绞尽脑汁 从算法层面 stranssen算法将矩阵乘法复杂度由 O n 3 O n 3 O n3 降
  • SSH方式连接Git及报错处理:RPC failed; result=22, HTTP code = 502

    Git作为常用的分布式版本控制系统 当前十分流行 我们已经介绍过有关Git进行版本控制的内容 但在实际使用Git过程中还是会遇到各种问题 今天就针对一个Git报错进行处理 通过HTTPS的git地址 clone到本地 初始一个项目包 add
  • Android Studio开发环境

    Android Studio 开发环境 React Native创建项目需要 java 开发环境 gt jdk 只需配置环境变量 gradle 只需配置环境变量 Android Studio 安装Android Studio Android
  • 固态硬盘启动计算机时间,装了固态硬盘开机还是慢,其实是忽略了这些...

    原标题 装了固态硬盘开机还是慢 其实是忽略了这些 你的电脑开机速度打败了全国百分之多少的用户 每天是否需要等上一段时间电脑才会开机 如果是这样 有人会说你该换个固态硬盘了 温馨提醒哦 这几个问题不解决 换了也没用 一 自检太慢 可以在BIO
  • 聊聊Java中的异常及处理

    前言 在编程中异常报错是不可避免的 特别是在学习某个语言初期 看到异常报错就抓耳挠腮 常常开玩笑说编程1分钟 改bug1小时 今天就让我们来看看什么是异常和怎么合理的处理异常吧 异常与error介绍 下面还是先让我们来看一下基本概念吧 异常
  • * \r \r\n \t的区别,是什么意思

    n 软回车 在Windows 中表示换行且回到下一行的最开始位置 相当于Mac OS 里的 r 的效果 在Linux unix 中只表示换行 但不会回到下一行的开始位置 r 软空格 在Linux unix 中表示返回到当行的最开始位置 在M
  • 【保姆式教程】用PowerDesigner导出数据库表结构为Word/Excel表格

    使用PowerDesigner将表结构导出到word表格 一 PowerDesigner的下载安装 已安装的跳过 PowerDesigner下载地址 后面只要next gt gt next gt gt finish 将track目录中的文件
  • 信奥赛和少儿编程的区别

    信奥赛和少儿编程的区别 现在的家长在培养孩子的学习的时候 可以说是非常的用心 他们会给孩子选择一些能够提升孩子能力的课程 就拿现在很多的家长想要孩子去学习少儿编程的课程来说 他们对于少儿编程和信息学奥赛的区别并不是很清楚 今天我们就一起来了
  • 类加载机制

    类的加载的机制 主要从两个方面回答 我们自己写的java文件到最终的运行 它必须经过编译和类加载这两个阶段 编译的过程就是把 java文件编程成class文件 类加载过程 就是把 class文件加载到JVM内存中 装载完成后会得到一个cla
  • 在浏览器上调试公众号网页的操作流程

    痛点说明 在实际开发过程中 公众号或者小程序开发都涉及到授权登录 我们最初原始的做法都是写好代码后 发布在测试环境中 然后再进行调试 有一个头痛的点在于如果你要验证你的想法 改动js的话 那么必须重新打包编译 打包和发布都是非常耗时的 引出
  • matlab大作业含代码_目标检测

    点击上方 AI算法修炼营 选择加星标或 置顶 标题以下 全是干货 来自 知乎 作者丨初识CV 来源丨https zhuanlan zhihu com p 102817180 仅作学术交流 如有侵权 请联系删文 一 数据增强 数据增强是增加深
  • Blender 2.8安装插件及如何找到打开插件

    安装插件 编辑 设置 插件 搜索 下载 安装 找到插件 安装的插件可在其下拉列表中看到所在位置 实在找不到 直接搜索
  • Java BigDecimal总结

    文章目录 Java BigDecimal总结 概述 float 和 double的问题 创建BigDecimal对象 BigDecimal valueOf 源码分析 equals 和 compareTo BigDecimal设置精度和舍入模
  • Kioptrix_Level_1-writeup

    Kioptrix Level 1 writeup 0x00 信息收集 目标机器IP 16 16 16 176 kali攻击机 16 16 16 177 nmap扫描端口服务 nmap A Pn 16 16 16 176 Starting N
  • 如何安装JDK

    Orade 公司提供了多种操作系统的 JDK 不同操作系统的 JIDK 在使用上基本类似 初学者可以根据自已使用的操作系统 从Cnacle 官方网站下载相应的JDK 安装文件 下面以64位的 Windows 10系统为的来演示 JDK 8
  • 对象的实例化

    对象的实例化 创建对象的方式 new Class的newInstance 只能调用空参的构造器 权限必须是public Constructor的newInstance Xxx 可以调用空参 带参的构造器 权限没有要求 使用clone 需要实
  • python进阶知识点汇总

    一 函数 1 函数的传参 1 值传递 将实际的参数复制一份传递给形参 函数中修改形参时 不会影响到实际参数 def a b c 2 return b c print a 10 print a 123 2 print a 2 2 引用传递 将