深浅拷贝

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 【第三篇】函数基础的更多相关文章

  1. 进击python第三篇:基础

    基础拾遗 序列解包 例: >>>x,y,z=1,2,3 >>>print x,y,z 1 2 3 交换变量也是没问题 >>>x,y=y,x > ...

  2. Python专题三字符串的基础知识

    Python专题三字符串的基础知识 在Python中最重要的数据类型包括字符串.列表.元组和字典等.该篇主要讲述Python的字符串基础知识. 一.字符串基础 字符串指一有序的字符序列集合,用单引号. ...

  3. 前端第三篇---前端基础之JavaScript

    前端第三篇---前端基础之JavaScript 一.JavaScript概述 二.JavaScript的基础 三.词法分析 四.JavaScript的内置对象和方法 五.BOM对象 六.DOM对象 七 ...

  4. python的三个函数(eval、exec、complie)和python版RMI

    一.python的三个函数: 1.eval函数: 之前已经讲过了这个函数,该函数也类似于php的eval,例如下边这个例子 eval("os.system('id')") 但是有个 ...

  5. Python【第一篇】基础介绍

    一.本节主要内容 Python介绍 发展史 Python 2 or 3? 安装 Hello World程序 变量 用户输入 模块初识 .pyc文件 数据类型初识 数据运算 表达式if ...else语 ...

  6. 前端开发【第三篇: JavaScript基础】

    JavaScript是一门编程语言,浏览器内置了JavaScript语言的解释器,所以在浏览器上按照JavaScript语言的规则编写相应代码之,浏览器可以解释并做出相应的处理. 一.如何编写 1.J ...

  7. Python第三周 函数详解

    def 函数名(): """注释说明"""" 执行逻辑体 return 返回值 定义不带参数的函数 带参数的函数 默认参数 这个是 ...

  8. Python 第三篇(上):python文件基础操作、json模块、lambda、map、filter、reduce和函数位置参数

    python一切皆对象,linux一切皆文件,python操作文件是很常见的O/I操作,其内置来open()函数可以完成文件的基本操作: 一:使用内置open()函数操作文件,基本语法如下: with ...

  9. Python 第三篇(下):collections系列、集合(set)、单双队列、深浅copy、内置函数

     一.collections系列: collections其实是python的标准库,也就是python的一个内置模块,因此使用之前导入一下collections模块即可,collections在py ...

  10. Python unittest第一篇:基础入门+命令行编译

    unittest单元测试框架最初受JUnit启发,与其他语言的主要单元测试框架具有相似的风格. 它支持测试自动化,支持开启或关闭某个测试,支持结合测试.另外它可以生成各个单元测试的报告.为了实现以上功 ...

随机推荐

  1. mysql 数据库 show命令

    MySQL中有很多的基本命令,show命令也是其中之一,在很多使用者中对show命令的使用还容易产生混淆,本文汇集了show命令的众多用法. 1. show tables或show tables fr ...

  2. Vutrl 自己搞SS的些问题

    虽然是第二次搞这玩意但还是搞了我三天,有些东西还是想要记录一下的,以下是我犯的错误 至于如何开始搭建Vutrl上面的服务器,下面有两个链接自己搞,我就讲讲我自己碰到的问题 https://segmen ...

  3. pip安装requests库失败

    pip install 安装第三方插件是出现Could not fetch URL https://pypi.python.org/simple/pool/: There was a problem ...

  4. C 的指针和内存泄漏

    引言 对于任何使用 C 语言的人,如果问他们 C 语言的最大烦恼是什么,其中许多人可能会回答说是指针和内存泄漏.这些的确是消耗了开发人员大多数调试时间的事项.指针和内存泄漏对某些开发人员来说似乎令人畏 ...

  5. datatable生成easyui的json格式汇总( 转)

    转自 http://www.cnblogs.com/WikStone/archive/2012/07/02/2573137.html 目前项目没有使用第三方的json转换库,都是根据json格式进行字 ...

  6. server中intersect的用法

    intersect 就像数学中的交集一样, select nam from  tb_table1 intersect select name from  tb_table2  查询的是两个数据集的交集 ...

  7. POJ 2195 Going Home【最小费用流 二分图最优匹配】

    题目大意:一个n*m的地图,上面有一些人man(m)和数量相等的house(H) 图上的距离为曼哈顿距离 问所有人住进一所房子(当然一个人住一间咯)距离之和最短是多少? 思路:一个人一间房,明显是二分 ...

  8. bzoj5106 [CodePlus2017]汀博尔 二分

    [CodePlus2017]汀博尔 Time Limit: 10 Sec  Memory Limit: 512 MBSubmit: 202  Solved: 75[Submit][Status][Di ...

  9. lightoj 1293 - Document Analyzer [ 两指针 + 字符串 ]

    传送门 1293 - Document Analyzer   PDF (English) Statistics Forum Time Limit: 3 second(s) Memory Limit: ...

  10. Vue基础学习

    使用vue-cli构建初始化vue项目 vue init webpack myfirst 项目截图:(开发工具:webStorm) 主要练习了vue的基本指令:v-bind.v-if.v-show.v ...