Python简要复习

2023-11-15

Python程序设计复习

Python基础知识

python的特点

兼具编译型解释型特性,兼顾过程式、函数式和面向对象编程范式的通用编程语言

解释型语言无需像编译型需要一次性的编译成机器码,然后运行,而是由名叫解释器的程序动态的将源代码逐句转化成机器代码执行

.py->.pyc

python环境中Python会将.pyc文件存储在__pycache__的目录下,并在文件名中加入Python版本标识字段

当运行源文件时,Python会先在相应位置寻找.pyc文件,找到.pyc后查看是否有改动,若有改动需要重新编译成字节码

Python程序无法一次性编译成机器码,是先变成字节码.pyc,然后由python虚拟机解释执行

pip包管理器

pip help #列出pip的子命令
pip install <packkage>
pip install <package>==<version>
pip uninstall <package>
pip list

python脚本

#!/usr/bin/env python

注意条件判断语句

if __name__=='__main__'

__name__ 是python的内置属性,是系统全局变量!每一个py文件都有一个属于自己的__name__

如果py文件作为模块被导入(import),那么__name__就是该py文件的文件名(也称 模块名);

如果py文件直接运行时(Ctrl+Shift+F10),那么__name__默认等于字符串__main__;

复合数据类型

列表

列表是若干对象的集合,其中的类型可以是不同的

In [1]: x=[1,3.14,"hello"]

In [2]: x
Out[2]: [1, 3.14, 'hello']

列表也是可变对象,指在对象创建后它的值仍能被修改

列表切片

使用冒号分割两个下标,分别代表起始下标(包含)和终止下标(不包含)

In [13]: x=[1,3.14,"hello"]

In [14]: a=x[0:-1]

In [15]: a
Out[15]: [1, 3.14]

列表常用方法

list.append(x)
list.extend(x) #将序列x中的所有元素依次添加至列表List的尾部
list.insert(index,x)#在列表指定位置插入对象x
list.pop([index])#删除尾部或者指定位置的元素
list.remove(x)#在列表中删除首次出现的指定元素x
list.clear#删除列表中的所有元素
list.index(x)#返回x元素的下标
list.count(x)#返回指定元素x的出现次数
list.sort()#对列表元素进行正序排列
list.reverse()
list.copy()#进行浅拷贝
In [22]: x
Out[22]: [1, 3.14, 'hello']

In [23]: x.append('world')
In [25]: x
Out[25]: [1, 3.14, 'hello', 'world']
In [26]: a=[1,2,3]

In [27]: x.extend(a)

In [28]: x
Out[28]: [1, 3.14, 'hello', 'world', 1, 2, 3]

列表推导式

In [29]: a=[i for i in [1,'2','3']]

In [30]: a
Out[30]: [1, '2', '3']
In [31]: [(i,j)for i in range(10) if i!=5 for j in range(3) if j>=2]
Out[31]: [(0, 2), (1, 2), (2, 2), (3, 2), (4, 2), (6, 2), (7, 2), (8, 2), (9, 2)]

元组

tuple是任意对象组成的序列,不支持原地修改,即元组已经创建,其中的元素用任何方式无法改变(不可变特性)

In [33]: x=(1,2,3)

In [34]: x
Out[34]: (1, 2, 3)

In [35]: y=tuple()

In [36]: y
Out[36]: ()

注意:元组无sortreverse方法

但是有sortedreversed方法,会返回一个新的序列对象

In [56]: x=(1,2,3,(1,2),[1,2,3])

In [57]: x
Out[57]: (1, 2, 3, (1, 2), [1, 2, 3])

In [58]: x[4][0]=None

In [59]: x
Out[59]: (1, 2, 3, (1, 2), [None, 2, 3])
In [61]: x[4]=None
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-61-dd313a01e66b> in <module>
----> 1 x[4]=None

TypeError: 'tuple' object does not support item assignment

字典

字典是键值对的可变集合

可用不可变对象作为

In [75]: x=dict(zip(keys,values))

In [76]: x
Out[76]: {'name': 'lihua', 'age': 12}
In [83]: x.get('name')#获取对应的键的值
Out[83]: 'lihua'

In [84]: x.update({'gender':'male'})

In [85]: x
Out[85]: {'name': 'lihua', 'age': 12, 'gender': 'male'}

keys() values items()分别对应字典的键、值和对象

键值对不可重复

实际是它的键不可重复

集合

set集合是无序可变序列,使用一对大括号{}界定,不允许重复

>>> a={1,2,3}
>>> type(a)
<class 'set'>
In [110]: a
Out[110]: {1, 2, 3, 4}

In [111]: a.remove(5)
---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)
<ipython-input-111-fa8c667230ef> in <module>
----> 1 a.remove(5)

KeyError: 5

In [112]: a.discard(5)

In [113]: a
Out[113]: {1, 2, 3, 4}

集合的并交和差集运算

In [113]: a
Out[113]: {1, 2, 3, 4}
In [117]: s={1,3,5}

In [118]: a.union(s)
Out[118]: {1, 2, 3, 4, 5}

In [119]: a.intersection(s)
Out[119]: {1, 3}

In [120]: a.difference(s)
Out[120]: {2, 4}

深浅拷贝

浅拷贝出现在copy函数、列表切片

如果要将嵌套的每一次都拷贝,那就需要deep copy函数

Unicode和字符串

字符是文本的最小组成部分

字符集是人为筛选的多个字符的集合

编码规则是将字符集中的字符转化为可存储的字节序列所按照的标准

UTF-8可变长编码方案

若码位小于127(0x7f) 单个字节表示

码位在128-2047 两个字节

大于2048 三或者四个

汉语通常编译成三个字节

函数

传递实时参数的参数解包

可以用列表 元组 字典 集合等可迭代对象作为实参,并在实参名称前面加个’*’

In [174]: def func(a,b,c):
     ...:     print(a,b,c)
     ...:

In [175]: func(*[1,2,3])
1 2 3

如果是字典对象需要在前面加上’**’

'*‘和’**'如果出现在函数定义当中代表接受任意数量的参数,出现在函数调用代表参数解包

lambda表达式

lambda arg1,arg2,...,argN:expression 

执行lambda表达式会生成一个函数对象,可以将其赋给变量,供之后调用,这与使用def语句定义函数无区别

In [178]: f=lambda x, y: x + y

In [179]: f(1,2)
Out[179]: 3

全局变量和局部变量

global关键字

迭代器

>>> m=map(lambda x:x**2,[1,2,3])
>>> it1=m.__iter__()
>>> it1 is m
True
>>> it1.__next__()
1
>>> it1.__next__()
4
>>> it1.__next__()
9
>>> it1.__next__()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
StopIteration
#斐波那契函数迭代器
class Fibs:
    def __init__(self,n=10):
        self.a=0
        self.b=1
        self.n=n
    def __iter__(self):
        return self
    def __next__(self):
        self.a,self.b=self.b,self.a+self.b
        if self.a>self.n:
            raise StopIteration
        return self.a

生成器函数

TODO

在这里插入图片描述

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

Python简要复习 的相关文章

随机推荐

  • 线程函数不能为类成员函数_GPU编程2CUDA核函数和线程配置

    CUDA核函数 在GPU上执行的函数称为CUDA核函数 Kernel Function 核函数会被GPU上多个线程执行 我们可以在核函数中获取当前线程的ID CUDA核函数的定义 global void addKernel int c co
  • 堆栈桢的生成原理

    摘要 那么Windbg分析Dump时 会如何推理堆栈过程呢 如果每个函数都是有标准的push ebp 那么按照ebp递推就可以了 否这就只能用其他方法分析 比如看看堆栈里某个地址是不是函数返回地址 该地址属于某个模块的代码段 这样就可以确定
  • mac系统下面调用brew报错core_ext/kernel_require.rb:55:in `require': cannot load such file

    mac系统下面调用brew报错 如下所示 usr local Homebrew Library Homebrew vendor portable ruby 2 3 7 lib ruby 2 3 0 rubygems core ext ker
  • [598]Windows版InfluxDB及相关软件安装与配置

    公司在做一个工业监控系统 虽然数据采集点并不算多但是数据量积累下来也非常大 使用mysql数据库进行数据存储和查询时很慢 所以让我调研一下时序数据库 通过调研和了解时序数据库在海量数据的读取和写出都比关系型数据库和NoSql快很多 有人做过
  • 如何向 Pandas DataFrame 添加行

    您可以使用df loc 函数在Pandas DataFrame的末尾添加一行 add row to end of DataFrame df loc len df index value1 value2 value3 您可以使用df appe
  • 计算机网络基本概念相关习题(二)

    一 单项选择题 1 不是对网络模型进行分层的目标 A 提供标准语言 B 定义功能执行的方法 C 定义标准界面 D 增加功能之间的独立性 2 将用户数据分成一个个数据块传输的优点不包括 A 减少延迟时间 B 提高错误控制效率 C 使多个应用更
  • 毕业答辩模板

    毕业答辩准备工作 一 首先是开场白 各位老师 上午好 我叫 是 级 班的学生 我的论文题目是 论文是在 导师的悉心指点下完成的 在这里我向我的导师表示深深的谢意 向各位老师不辞辛苦参加我的论文答辩表示衷心的感谢 并对三年来我有机会聆听教诲的
  • 三层架构、MVC、前后分离的一些知识

    三层架构 MVC 前后分离的一些知识 三层架构模型 MVC模式 三层架构与 MVC 架构区别 前后端分离开发时的变化 一个前后端分离项目的分层 前端 MVVM 后端 Service层 Model层 Mapper映射 BLL业务逻辑层 DAL
  • FreeRTOS笔记(十)中断

    中断 当CPU在执行某一事件A时 发生另外一个更重要紧急的事件B请求CPU去处理 产生了中断 于是CPU暂时中断当前正在执行的事件A任务而对对事件B进行处理 CPU处理完事件B后再返回之前中断的位置继续执行原来的事件A 这一过程统称为中断
  • 第四章 数据的预处理与特征构建(续)

    申请评分卡模型 数据的预处理与特征构建 续 课程简介 逻辑回归模型的特征需要是数值型 因此类别型变量不能直接放入模型中去 需要对其进行编码 此外 为了获取评分模型的稳定性 建模时需要对数值型特征做分箱的处理 最终在带入模型之前 我们还需要对
  • git 拉取分支到本地文件夹!

    前言 我现在需要改项目 我把项目来下来了却发现只需要修改某个分支的项目 所以只需要拉下项目的某个分支就行了 废话不多说直接开始教程 目录 1 创建本地仓库 2 与远程仓库建立联系 3 确定你需要拉的分支名 4 本地创建的分支与远程分支相互连
  • 【java.lang.ref】当WeakReference的referent重写了finalize方法时会发生什么

    问题 question 当WeakReference的referent重写了finalize方法时会发生什么 测试代码 JVM中是存在这样的情况的 一个Java对象 重写了finalize方法 在使用的过程中又被SoftReference或
  • 阿里云服务器搭建FRP实现内网穿透-转发

    前言 1 什么是frp frp是一个专注于内网穿透的高性能的反向代理应用 支持TCP UDP HTTP HTTPS等多种协议 且支持P2P通信 可以将内网服务以安全 便捷的方式通过具有公网IP节点的中专暴露到公网 2 演示环境 一 frp软
  • 火狐插件之(1) 用ScribeFire写csdn博客(很棒)

    ScribeFire 是火狐插件 简单快速的写博客 支持CSDN博客 关键是以下地址 http blog csdn net whyacinth services metablogapi aspx 将红色部分换成你的账号 自动检测回失败 手动
  • 内存卡永久删除的文件如何恢复?

    内存卡是和机械硬盘 U盘一个性质的数据存储工具 可以说是 同行 而作用更是不必多说 就是存储文件数据 谈谈今天的主题 万一真出现了这种情况 那存储我们电脑数据的内存卡永久删除的文件怎么恢复 内存卡永久删除的文件怎么恢复 内存卡永久删除的文件
  • gitee中git不能使用http协议提交项目

    git使用https协议提交项目的时候出现以下错误 error RPC failed curl 56 GnuTLS recv error 110 The TLS connection was non properly terminated
  • mixins详解

    实现一个日志功能 组件在挂载前打印 Component will mount 组件挂载后打印 Component did mount 不能忍受的写法 var AComponent React createClass componentWil
  • README_Albumentations

    一 文档 GitHub https github com albumentations team albumentations 官方文档 Albumentations Documentation 二 Installation pip ins
  • Amazon AWS —— 免费的午餐不好吃

    转自acgcss 众技术宅所周知 Amazon AWS 之前提供了 新用户凭有效信用卡免费试用一年 的活动 至今没有给出截止日期 虽说免费的午餐很诱人 而且由于信用卡的门槛 也避免了一部分的滥用 但是要安心吃好这顿饭 没有第一个吃螃蟹的人提
  • Python简要复习

    Python程序设计复习 Python基础知识 python的特点 兼具编译型和解释型特性 兼顾过程式 函数式和面向对象编程范式的通用编程语言 解释型语言无需像编译型需要一次性的编译成机器码 然后运行 而是由名叫解释器的程序动态的将源代码逐