Python【基础第三篇】
set集合
s1=set()
集合特点:
- 访问速度快
- 没有重复项
collections系列(数据类型容器模块)
一、计数器(Counter)
Counter是对字典类型的补充,用于追踪值的出现次数。
import collections 导入模块
例:
import collections
obj=collections.Counter("aaafffefwifewfewf")
print(obj)
Counter({'f': 7, 'a': 3, 'w': 3, 'e': 3, 'i': 1})
二、有序字典(OrderedDict)
orderdDict是对字典类型的补充,他记住了字典元素添加的顺序
例:
import collections
dic=collections.OrderedDict()
dic['k1']='v1'
dic['k2']='v2'
dic['k3']='v3'
print(dic)
输出:OrderedDict([('k1', 'v1'), ('k2', 'v2'), ('k3', 'v3')])
三、默认字典(defaultdict)
defaultdict是对字典的类型的补充,它默认给字典的值设置了一个类型
四、可命名元组(namedtuple)
根据nametuple可以创建一个包含tuple所有功能以及其他功能的类型
例:
import collections
MytupleClass=collections.namedtuple('MytupleClass',['x','y','z'])
obj=MytupleClass(11,22,33)
print(obj.x)
print(obj.y)
print(obj.z)
输出:11
22
33
双向队列
一个线程安全的双向队列
例:
import collections
d=collections.deque()
d.append('1')
d.appendleft('0')
d.appendleft('1')
print(d)
r=d.count('1')
print(r)
输出:
deque(['1', '0', '1'])
2
深浅拷贝原理
对于字符串和数字而言,赋值、浅拷贝和深拷贝无意义,因为其永远指向同一个内存地址
深拷贝
在内存中将所有的数据重新创建一份(排除最后一层,即:python内部对字符串和数字的优化)
copy.copy()
浅拷贝
在内存中只额外创建第一层数据
copy.deepcopy()
函数
一、背景
函数式编程和面向过程编程的区别:
- 函数式:将某功能代码封装到函数中,日后便无需重复编写,仅调用函数即可
- 面向对象:对函数进行分类和封装,让开发“更快更好更强...”
函数式编程最重要的是增强代码的重用性和可读性
二、定义和使用
def 函数名(参数):
...
函数体
...
函数的定义主要有如下要点:
- def:表示函数的关键字
- 函数名:函数的名称,日后根据函数名调用函数
- 函数体:函数中进行一系列的逻辑计算,如:发送邮件、计算出 [11,22,38,888,2]中的最大数等...
- 参数:为函数体提供数据
- 返回值:当函数执行完毕后,可以给调用者返回数据。
以上要点中,比较重要有参数和返回值:
1、返回值
函数是一个功能块,该功能到底执行成功与否,需要通过返回值来告知调用者。
def 发送短信():
发送短信的代码...
if 发送成功:
return True
else:
return False
while True:
# 每次执行发送短信函数,都会将返回值自动赋值给result
# 之后,可以根据result来写日志,或重发等操作
result = 发送短信()
if result == False:
记录日志,短信发送失败...
2、参数
- 无参数
- 有参数
- 普通参数
- 默认参数
- 动态参数
普通参数举例:(argv为函数mail的形参,1和2为mail的)
def mail(argv):
n=123
n+=argv
print(n)
mail(1)
mail(2)
输出:124
125
默认参数举例:(注:默认参数需要放在参数列表最后)
def mail(argv1,argv2=10):
n=123
n+=argv1
n+=argv2
print(n)
mail(1,2)
mail(1)
输出:126
134
指定参数举例:(指定形参的值)
def show(a1,a2):
print(a1,a2)
show(a2=123,a1=999)
输出:999 123
动态参数举例1:(*args会把实参当做1个序列处理,**args会把实参当做1个字典处理)
def show(*args,**args2):
print(args,type(args))
print(args2,type(args2))
show(11,22,33,44,a1='aaa',b1='bbb')
输出:(11, 22, 33, 44) <class 'tuple'>
{'a1': 'aaa', 'b1': 'bbb'} <class 'dict'>
动态参数举例2:(如果让形参接收和实参一样的类型,需对应在实参前加*或**,否则会把实参当做1个元组处理)
def show(*args,**args2):
print(args,type(args))
print(args2,type(args2))
e=[11,22,33,44]
f={'a1':'aaa','b1':'bbb'}
show(e,f)
print("==================")
show(*e,**f)
输出:
([11, 22, 33, 44], {'a1': 'aaa', 'b1': 'bbb'}) <class 'tuple'>
{} <class 'dict'>
==================
(11, 22, 33, 44) <class 'tuple'>
{'a1': 'aaa', 'b1': 'bbb'} <class 'dict'>
lambda表达式
lambda存在意义就是对简单函数的简洁表示
例:
func=lambda a:a+1
ret=func(99)
print(ret)
输出:100
1、创建形式参数a
2、函数内容,a+1,并把结果return
内置函数
open函数
该函数用于文件处理
f=open('test.log','w',encoding='utf-8')
f.write('123456') #将123456写入文件test.log
f.close()
f=open('test.log','r',encoding='utf-8')
print("==========")
print(f.read()) #读取文件test.log
f.close()
f=open('test.log','r',encoding='utf-8')
f.seek(1) #指定当前指针位置
print("==========")
print(f.tell()) #查看当前指针位置
print(f.read(2)) #指定读取字符
print(f.tell()) #查看当前指针位置
f.close()
输出:==========
123456
==========
1
23
3
Python【基础第三篇】的更多相关文章
- Python基础第三篇
一.collections系列 Counter是对字典类型的补充,用于追踪值的出现次数,具备字典的所有功能 + 自己的功能 1.计数器Counter import collections a='aba ...
- python基础-第三篇-函数编程
基本数据类型之set set是无序不允许重复的集合 set创建:s = set() 创建空集合 s = {11,22,33} 转换s = set(可迭代数据) li = [11,22,33,44] ...
- Python 基础语法(三)
Python 基础语法(三) --------------------------------------------接 Python 基础语法(二)------------------------- ...
- NHibernate 映射基础(第三篇) 简单映射、联合主键
NHibernate 映射基础(第三篇) 简单映射.联合主键 NHibernate完全靠配置文件获取其所需的一切信息,其中映射文件,是其获取数据库与C#程序关系的所有信息来源. 一.简单映射 下面先来 ...
- Python基础知识(三)
Python基础知识(三) 一丶整型 #二进制转成十进制的方法 # 128 64 32 16 8 4 2 1 1 1 1 1 1 1 例如数字5 : 101 #十进制转成二进制的方法 递归除取余数,从 ...
- Python基础学习三
Python基础学习三 1.列表与元组 len()函数:可以获取列表的元素个数. append()函数:用于在列表的最后添加元素. sort()函数:用于排序元素 insert()函数:用于在指定位置 ...
- python数据挖掘第三篇-垃圾短信文本分类
数据挖掘第三篇-文本分类 文本分类总体上包括8个步骤.数据探索分析->数据抽取->文本预处理->分词->去除停用词->文本向量化表示->分类器->模型评估.重 ...
- Python基础【第一篇】
一.Python简介 Python的创始人(Guido von Rossum 荷兰人),Guido希望有一种语言既能像C一样方便地调用操作系统的功能接口,也能像shell脚本一样,轻松地实现编程,A ...
- Python 基础学习 总结篇
Python 基础学习总结 先附上所有的章节: Python学习(一)安装.环境配置及IDE推荐 Python学习(二)Python 简介 Python学习(三)流程控制 Python学习(四)数据结 ...
- python基础-第六篇-6.2模块
python之强大,就是因为它其提供的模块全面,模块的知识点不仅多,而且零散---一个字!错综复杂 没办法,二八原则抓重点咯!只要抓住那些以后常用开发的方法就可以了,哪些是常用的?往下看--找答案~ ...
随机推荐
- PHP高级特性一之正则表达式用法
在PHP中,我们进行字符串处理时,能用字符串处理函数时我们当然要使用简单的字符串处理函数,但字符串处理函数的能力是有限的,所以我们就需要利用一个更强大的工具,那就是正则表达式. 简述正则表达式 正则表 ...
- java-基础练习题3
[程序3] 题目:打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身.例如:153是一个"水仙花数",因 ...
- c# -- 读取文件夹中的所有文件(备忘)
读取选取的文件夾下的所有.txt文件 private void button1_Click(object sender, EventArgs e){ if (folderBrowserDialog1. ...
- .gitignore规则不生效的解决办法
.gitignore规则不生效的解决办法 使用git 的时候,在.gitignore中已经添加了某个文件或者文件夹,但是使用git status还能看见该文件的修改提示--–说明.gitignore未 ...
- HTTP全部报文首部字段
总结了一下HTTP各种报文首部字段. HTTP报文类型与结构 HTTP报文结构 报文首部 空行(CR+LF) 报文主体 HTTP报文类型 http有两种类型报文,请求报文和响应报文两种报文的首部结构如 ...
- CodeForces Round #298 Div.2
A. Exam 果然,并没有3分钟秒掉水题的能力,=_=|| n <= 4的时候特判.n >= 5的时候将奇数和偶数分开输出即可保证相邻的两数不处在相邻的位置. #include < ...
- 配置centos防火墙(iptables)开放80端口
#添加规则 /sbin/iptables -I INPUT -p tcp --dport 80 -j ACCEPT #保存 /etc/rc.d/init.d/iptables save
- WEBUS2.0 In Action - 搜索操作指南 - (2)
上一篇:WEBUS2.0 In Action - 搜索操作指南(1) | 下一篇:WEBUS2.0 In Action - 搜索操作指南(3) 2. 使用Query Query是所有查询的基类, 它一 ...
- Typed Message模式与Event Sourcing
引言 在<设计模式沉思录>(Pattern Hatching: Design Patterns Applied,[美]JohnVlissides著)一书的第4章中,围绕事件Message传 ...
- 每天一个Linux命令(7): cp
cp命令 该命令的功能是将给出的文件或目录拷贝到另一文件或目录中,同MSDOS下的copy命令一样,功能十分强大. 语法: cp [选项] 源文件或目录 目标文件或目录 ...