python 【第三篇】函数基础
深浅拷贝
set是一个无序且不重复的元素集合
访问速度快
天生解决重复问题
#!/usr/bin/env python3
# -*- coding:utf-8 -*-
#深浅拷贝
import copy
#浅拷贝
#copy.copy()
#深拷贝
#copy.deepcopy()
#赋值 #字符串,数字,无论深拷贝浅拷贝还是赋值,永远指向内存的一块地址
a1 = "fdkoslagj"
a2 = a1
print(id(a1))
print(id(a2)) #其他,元组,列表,字典
n1 = {"k1":"wu","k2":123,"k3":["alex",456]}
n2 = n1
print(id(n1))
print(id(n2))
#浅拷贝
n3 = copy.copy(n1)
print(id(n1))
print(id(n3)) print(id(n1["k3"]))
print(id(n3["k3"])) #深拷贝
n4 = copy.deepcopy(n1)
print(id(n1))
print(id(n4)) dic = {
"cpu":[80,],
"mem":[80,],
"dist":[80,]
} print('before',dic)
#深拷贝,迭代拷贝
new_dic1 = copy.deepcopy(dic)
#改变内容,原变量也会变
#new_dic2 = copy.copy(dic)
new_dic1['cpu'][0]=50
print(dic)
print(new_dic1)
交集 差集 元素计数 有序字典 默认字典
#!/usr/bin/env python3
# -*- coding:utf-8 -*- s1 = set([11,22,33])
s2 = set([22,44]) #在s1中除去s1与s2的交集
ret1 = s1.difference(s2)
#求s1和s2的差集
ret2 = s1.symmetric_difference(s2) ret3 = s2.symmetric_difference(s1)
ret4 = s2.difference(s1) print(ret1)
print(ret2)
print(ret3)
print(ret4) import collections
#元素计数 对字典
obj = collections.Counter('kdfjsalgjkdlsajg:j')
print(obj)
#取前四个
ret = obj.most_common(4)
print(ret)
for item in obj.elements():
#输出所有元素
print(item)
for k,v in obj.items():
#输出计数后的元素:个数
print(k,v) #有序字典 #将字典的key,保存在列表中 #有序字典
dic = collections.OrderedDict()
dic['k1']='v1'
dic['k2']='v2'
print(dic)
#将k1拿到最后
dic.move_to_end('k1')
print(dic)
'''
#要加参数
dic.pop('k1')
print(dic)
#移除最后一个
dic.popitem()
print(dic)
'''
dic.update({'k1':'v11','k10':'v10'})
print(dic) #默认字典,key值对应的是一个列表
dic = collections.defaultdict(list)
dic['k1'].append('alex')
print(dic)
可命名元组,自定义索引值 双向队列 循环右移 单项队列
#!/usr/bin/env python3
# -*- coding:utf-8 -*- import collections #可命名元组,自定义索引值
MytupleClass = collections.namedtuple('MytupleClass',['x','y','z'])
obj = MytupleClass(11,22,33)
print(obj.x,obj.y,obj.z) #双向队列
d = collections.deque()
d.append('1')
d.appendleft('10')
d.appendleft('1')
print(d)
r=d.count('1')
print(r)
d.extend(['xx','yy'])
print(d)
d.extendleft(['zz'])
print(d)
#循环右移
d.rotate(1)
print(d)
d.rotate(2)
print(d)
#单项队列
import queue
q = queue.Queue()
q.put('123')
print(q.qsize())
print(q.get())
邮箱测试
#!/usr/bin/env python3
# -*- coding:utf-8 -*-
'''
1.需要开启邮箱服务sendmail
2.邮箱服务器需要开启SMTP服务
'''
def sendmail():
try:
import smtplib
from email.mime.text import MIMEText
from email.utils import formataddr msg = MIMEText('邮件内容', 'plain', 'utf-8')
msg['From'] = formataddr(["发件人", 'pythonxiao@126.com'])
msg['To'] = formataddr(["收件人", '329275108@qq.com'])
msg['Subject'] = "邮件主题" server = smtplib.SMTP("smtp.126.com", 25)
server.login("pythonxiao@126.com", "xiaozhiqi2016")
server.sendmail('pythonxiao@126.com', [329275108@qq.com, ], msg.as_string())
server.quit()
except:
return "失败"
else:
return 'cc' ret = sendmail(msg)
if ret == 'cc':
print("发送成功")
else:
print("发送失败")
函数参数问题 默认参数 指定参数 参数为列表 字典
#!/usr/bin/env python3
# -*- coding:utf-8 -*- #默认参数放后边
def show(a1,a2=999):
print(a1,a2)
show(111) #指定参数
def show1(a1,a2):
print(a1,a2)
show1(a2=123,a1=999) #参数为列表
def show2(arg):
print(arg)
n=[11,22,33,44]
show2(n) # *arg 输出元组类型
def show3(*arg):
print(arg,type(arg))
show3(1,33,44,55) # **arg 输出字典类型
def show4(**arg):
print(arg,type(arg))
show4(n1=78) # *args **kwargs
def show5(*args,**kwargs):
print(args,type(args))
print(kwargs,type(kwargs))
show5(11,22,33,n1=88,alex='sb') #会将俩个都给*args
l = [11,33,55]
d = {'n1':88,'alex':'sb'}
show5(l,d) #可以用一下方式实现*args -->l,**kwargs -->d
show5(*l,**d)
字符串格式化
#字符串格式化一
s1 = "{0} is {1}"
result = s1.format('alex','2b')
print(result) #字符串格式化二
s2 = "{name} is {acter}"
result = s2.format(name='alex',acter='sb')
print(result) #字符串格式化三
s3 ="{name} is {acter}"
d = {'name':'alex','acter':'shab'}
result = s3.format(**d)
print(result)
lambda,bool,all,any,Excel表处理 eval, filter,map,round,zip
#字符串格式化一
s1 = "{0} is {1}"
result = s1.format('alex','2b')
print(result) #字符串格式化二
s2 = "{name} is {acter}"
result = s2.format(name='alex',acter='sb')
print(result) #字符串格式化三
s3 ="{name} is {acter}"
d = {'name':'alex','acter':'shab'}
result = s3.format(**d)
print(result)
文件处理
r 只读模式(默认)
w 只写模式。(不可读:不存在则创建,存在则删除内容)
a 追加模式。(可读,不存在则创建,存在则则只追加内容)
"+" 表示可同时读写某个文件 r+可读写文件,可读可写,可追加
w+写读
a+ 同a "U"表示在读取时,可以将\r \n \r\n 自动转换成\n(与r或r+模式同使用)
rU
r+U "b"表示处理二进制文件,(如FTP擦送上传ISO镜像文件,Linux可忽略,Windows处理二进制文件时需标注)
rb
wb
ab
#写
f = open('test.log','w',encoding='utf-8')
f.write('xuxiaopao')
f.close()
#读 read(2)是按照字符拿的
f = open('test.log','r',encoding='utf-8')
ret = f.read(5)
print(ret)
f.close() #tell按照细节搞的,查看当前指针位置
f = open('test.log','r',encoding='utf-8')
print(f.tell())
f.read(5)
print(f.tell())
f.close() #seek 指定当前指针位置
f = open('test.log','r',encoding='utf-8')
f.seek(3) #2会出错 ,3正常
ret = f.read(3)
print(ret)
f.close() #truncate 只保留前边的东西,后边的不要
f = open('test.log','r+',encoding='utf-8')
f.seek(3)
#print(f.read())
f.truncate()
f.close()
python 【第三篇】函数基础的更多相关文章
- 进击python第三篇:基础
基础拾遗 序列解包 例: >>>x,y,z=1,2,3 >>>print x,y,z 1 2 3 交换变量也是没问题 >>>x,y=y,x > ...
- Python专题三字符串的基础知识
Python专题三字符串的基础知识 在Python中最重要的数据类型包括字符串.列表.元组和字典等.该篇主要讲述Python的字符串基础知识. 一.字符串基础 字符串指一有序的字符序列集合,用单引号. ...
- 前端第三篇---前端基础之JavaScript
前端第三篇---前端基础之JavaScript 一.JavaScript概述 二.JavaScript的基础 三.词法分析 四.JavaScript的内置对象和方法 五.BOM对象 六.DOM对象 七 ...
- python的三个函数(eval、exec、complie)和python版RMI
一.python的三个函数: 1.eval函数: 之前已经讲过了这个函数,该函数也类似于php的eval,例如下边这个例子 eval("os.system('id')") 但是有个 ...
- Python【第一篇】基础介绍
一.本节主要内容 Python介绍 发展史 Python 2 or 3? 安装 Hello World程序 变量 用户输入 模块初识 .pyc文件 数据类型初识 数据运算 表达式if ...else语 ...
- 前端开发【第三篇: JavaScript基础】
JavaScript是一门编程语言,浏览器内置了JavaScript语言的解释器,所以在浏览器上按照JavaScript语言的规则编写相应代码之,浏览器可以解释并做出相应的处理. 一.如何编写 1.J ...
- Python第三周 函数详解
def 函数名(): """注释说明"""" 执行逻辑体 return 返回值 定义不带参数的函数 带参数的函数 默认参数 这个是 ...
- Python 第三篇(上):python文件基础操作、json模块、lambda、map、filter、reduce和函数位置参数
python一切皆对象,linux一切皆文件,python操作文件是很常见的O/I操作,其内置来open()函数可以完成文件的基本操作: 一:使用内置open()函数操作文件,基本语法如下: with ...
- Python 第三篇(下):collections系列、集合(set)、单双队列、深浅copy、内置函数
一.collections系列: collections其实是python的标准库,也就是python的一个内置模块,因此使用之前导入一下collections模块即可,collections在py ...
- Python unittest第一篇:基础入门+命令行编译
unittest单元测试框架最初受JUnit启发,与其他语言的主要单元测试框架具有相似的风格. 它支持测试自动化,支持开启或关闭某个测试,支持结合测试.另外它可以生成各个单元测试的报告.为了实现以上功 ...
随机推荐
- jdk环境变量配置至第一个简单程序运行成功
桌面右键单击我的电脑,属性,高级,环境变量,然后再系统变量中配置(也可在用户变量中配置) 在配置环境变量时限查看是否已存在变量名称,有则添加路径,没有则创建再添加路径 /* JAVA_HOME% C: ...
- 实现验证的vsftpd虚拟用户
实现基于文件验证的vsftpd虚拟用户--(一台) 一.创建用户数据库文件 vim /etc/vsftpd/vuser cd /etc/vsftpd/ db_load -T -t hash -f vu ...
- Java性能调优概述
目录 Java性能调优概述 性能优化有风险和弊端,性能调优必须有明确的目标,不要为了调优而调优!!!盲目调优,风险远大于收益!!! 程序性能的主要表现点 执行速度:程序的反映是否迅速,响应时间是否足够 ...
- pwnable.kr blackjack之write up
首先我们按提示找到源代码,看这一段: int betting() //Asks user amount to bet { printf("\n\nEnter Bet: $"); s ...
- Insert or Merge
7-13 Insert or Merge(25 分) According to Wikipedia: Insertion sort iterates, consuming one input elem ...
- Java学习之File类理解
File类是io包中唯一代表磁盘文件本身的对象.File类定义了一些与平台无关的方法来操作文件,可以通过调用File类中的方法,实现创建.删除.重命名文件等.File类的对象主要用来获取文件本身的一些 ...
- 【转】关于RabbitMQ
1 什么是RabbitMQ? RabbitMQ是实现AMQP(高级消息队列协议)的消息中间件的一种,最初起源于金融系统,用于在分布式系统中存储转发消息,在易用性.扩展性.高可用性等方面表现不 ...
- 大数据学习——采集目录到HDFS
采集需求:某服务器的某特定目录下,会不断产生新的文件,每当有新文件出现,就需要把文件采集到HDFS中去 根据需求,首先定义以下3大要素 l 采集源,即source——监控文件目录 : spoold ...
- HDU 2462 The Luckiest number
The Luckiest number Time Limit: 1000ms Memory Limit: 32768KB This problem will be judged on HDU. Ori ...
- BNUOJ 6378 无题I
无题I Time Limit: 10000ms Memory Limit: 32768KB This problem will be judged on HDU. Original ID: 22346 ...