Python简要复习

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

在这里插入图片描述

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

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

相关文章

热备份路由协议原理

热备份路由协议原理 HSRP协议/VRRP协议热备份协议 热备份协议&#xff08;Hot Standby Protocol&#xff09; 是一种基于冗余设计的协议&#xff0c;用于提高网络的可靠性和冗余性。它允许多个设备共享同一个IP地址&#xff0c;其中一个设备被选为主设备&#xff0c;其他设备…

Tinkercad 建模21个小技巧

21个Tinkercad 建模小技巧 原文 参考文章&#xff1a;在 Tinkercad 中加快设计的 22 个技巧 一起来了解一下21个Tinkercad 3D建模小技巧&#xff0c;让你快人一步。 技巧1 Copy & Paste 文件&#xff0c;整合设计 想把文件A里面的模型拷贝到文件B里面&#xff1f; 很容…

【Linux】Centos的一些快捷操作

Centos的一些快捷操作 一个窗口多个终端GVIM 一个窗口多个文件 一个窗口多个终端 GVIM 一个窗口多个文件

idealC-2020.1.4免费下载(附安装教程)

下载地址 [软件名称]: IntelliJ IDEA 2020 [软件大小]: 560MB [安装环境]: Windows [下载链接]: 链接: https://pan.baidu.com/s/1yGOWqfRVE6cPsAe0qHpnbg https://pan.baidu.com/s/1yGOWqfRVE6cPsAe0qHpnbg 提取码: zt88 软件介绍 idea 2020.是由捷克IntelliJ公司而…

python_day16_设计模式

“”“单例模式”“” “”“工厂模式”“” class Person:passclass Worker(Person):passclass Student(Person):passclass Teacher(Person):passclass Factory:def get_person(self, p_type):if p_type w:return Worker()elif p_type s:return Student()else:return Te…

51单片机学习--按键控制流水灯模式定时器时钟

TMOD负责确定T0和T1的工作模式&#xff0c;TCON控制T0和T1的启动或停止计数&#xff0c;同时包含定时器状态 TF1&#xff1a;定时器1溢出标志 TF0&#xff1a;定时器0溢出标志 0~65535 每隔1微秒计数器1&#xff0c;总时间65535微秒&#xff0c;赋上初值64535&#xff0c;则只…

webstorm格式化代码后单引号转成了双引号

webStorm格式化js代码时单引号变成了双引号&#xff0c;问题如下&#xff1a; 格式化前&#xff1a; 格式化后&#xff1a; 解决办法&#xff1a; window: File -> Settings -> Editor -> Code Style -> Javascript&#xff1b; mac: webStorm -> Preference …

Flink回撤流

1.回撤流定义&#xff08;RetractStream&#xff09; Flink 的回撤流是指在 Flink 的流处理算法中&#xff0c;撤回已经发送到下游节点的数据。这是因为在实际应用场景中&#xff0c;有些错误数据可能会发送到下游节点&#xff0c;因此需要回撤流以保证数据的准确性。 回撤流…

【Docker】Docker应用部署之Docker容器安装Tomcat

目录 一、搜索镜像 二、拉取镜像 三、创建容器 四、测试使用 一、搜索镜像 docker search tomcat 二、拉取镜像 docker pull tomcat:版本 三、创建容器 首先在宿主机创建数据卷的目录 mkdir /root/tomcat # 创建目录 cd /root/tomcat # 进入目录 docker run -id -…

【腾讯云 Cloud Studio 实战训练营】永不宕机的IDE,Coding Everywhere

【腾讯云 Cloud Studio 实战训练营】永不宕机的IDE&#xff0c;随时随地写代码&#xff01; 写在最前视频讲解&#xff1a;Cloud Studio活动简介何为腾讯云 Cloud Studio?Cloud Studio简介免费试用&#xff0c;上手无忧Cloud Studio 特点及优势云端开发多种预制环境可选metawo…

怎么学习C语言,才能快速掌握?

有多年软件行业经验&#xff0c;期间参与过多个C语言项目。要掌握一门编程语言&#xff0c;仅仅投入时间学习是不够的&#xff0c;关键在于实际项目经验。在没有真正实战经验之前&#xff0c;不宜轻易声称掌握某种编程语言&#xff0c;因为编程是积累性的工作&#xff0c;理论知…

本地Git仓库和GitHub仓库SSH传输

SSH创建命令解释 ssh-keygen 用于创建密钥的程序 -m PEM 将密钥的格式设为 PEM -t rsa 要创建的密钥类型&#xff0c;本例中为 RSA 格式 -b 4096 密钥的位数&#xff0c;本例中为 4096 -C “azureusermyserver” 追加到公钥文件末尾以便于识别的注释。 通常以电子邮件地址…

微服务契约测试框架Pact-Python实战

Pact是一个契约测试框架&#xff0c;有多种语言实现&#xff0c;本文以基于pact-python探究契约测试到底是什么&#xff1f;以及如何实现 官网&#xff1a;自述文件 |契约文档 (pact.io) 契约测试步骤 1、为消费者写一个单元测试&#xff0c;让它通过&#xff0c;并生成契约…

中小企业如何低成本实施MES管理系统

中小企业在市场竞争中需要有高效的管理体系来支持其运营和发展。中小企业MES管理系统是一种先进的管理系统&#xff0c;可以提升工厂智能化水平&#xff0c;提高生产效率&#xff0c;是中小企业必须采取的有效管理工具。然而&#xff0c;由于资金和技术的限制&#xff0c;中小企…

Git分布式版本控制工具和GitHub(二)--Git指令入门

一.指令入门前的准备 1.Git全局设置 2.获取Git仓库 例如&#xff1a;将我GitHub上的first_resp仓库克隆到本地。 点击进入first_rep&#xff0c;后面本地仓库操作的学习就是在这个界面右键打开Git Bash 3.工作区&#xff0c;暂存区&#xff0c;版本库概念 注&#xff1a;如果空…

Ansible自动化运维工具

Ansible是一个基于Python开发的配置管理和应用部署工具&#xff0c;现在也在自动化管理领域大放异彩。它融合了众多老牌运维工具的优点&#xff0c;Pubbet和Saltstack能实现的功能&#xff0c;Ansible基本上都可以实现。 Ansible能批量配置、部署、管理上千台主机。比如以前需要…

CAN转ETHERCAT网关can协议是什么意思

大家好&#xff0c;今天要跟大家分享一款自主研发的通讯网关&#xff0c;JM-ECT-CAN。这款产品能够将各种CAN总线和ETHERCAT网络连接起来&#xff0c;实现高效的数据传输和通信。那么&#xff0c;这款通讯网关具体有哪些功能和特点呢&#xff1f;接下来&#xff0c;我们就一起来…

<el-date-picker>组件选择开始时间,结束时间自动延长30min

背景&#xff1a;选择开始时间&#xff0c;结束时间自动增加30分钟&#xff0c;结束时间也可重新选择&#xff0c;如图&#xff1a; <el-form-item label"预约开始时间" prop"value1"><el-date-pickersize"large"v-model"ruleForm…

SpringBoot2.5.6整合Elasticsearch7.12.1

SpringBoot2.5.6整合Elasticsearch7.12.1 下面将通过SpringBoot整合Elasticseach&#xff0c;SpringBoot的版本是2.5.6&#xff0c;Elasticsearch的版本是7.12.1。 SpringBoot整合Elasticsearch主要有三种方式&#xff0c;一种是通过elasticsearch-rest-high-level-client&am…

【MySQL】模具更新方案

系列文章 C#底层库–MySQLBuilder脚本构建类&#xff08;select、insert、update、in、带条件的SQL自动生成&#xff09; 本文链接&#xff1a;https://blog.csdn.net/youcheng_ge/article/details/129179216 C#底层库–MySQL数据库操作辅助类&#xff08;推荐阅读&#xff0…