python之day3
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python之day3相关的知识,希望对你有一定的参考价值。
今天是 武sir 第一天给我们讲课,讲的非常精彩。
进入正题:
今天所学的知识点包括:
1,set
无序,不重复,可嵌套。
2,函数
定义函数,函数体不执行,只有调用函数时,函数体才执行。
3,三目运算:
4,内置函数简介:
5,文件操作:
包括打开文件,操作文件,关闭文件。
#######################################
好,我们详细说一下今天的收获。
一,引入类:
通过对字符串的讲解,我们引入了类的概念,将所有的字符串归纳起来,将他们的所有功能,写到字符串类里面,使用这些功能时,直接调用即可。
对于其他的字典,列表,元组等都是大同小异的,他们都属于类,之后自建的类,我们都可以这么理解。
二,集合(set):
首先我们创建一个列表,list((11,2,33,44)),,list__init__,内部会执行for循环(11,22,33,44)。
set也是一样,s=set()#创建集合,li = [11,22,33,44],s1 =set(li),print(s1)
1, 创建集合的方法:
s1 = {11,22}
s2 = set()
s3 = set([11,22,33,44])
2,集合的功能:
1),差异性判断:
s1 = {11,22,33}
s2 = {22,33,44}
s3 = s1.difference(s2)
s1中有,s2中没有的。
print(s3)
{11}
s3 = s1.symmetric_difference(s2)
s1,s2中的差异,
print(s3)
{11,44}
如果是s1.difference_update(s2)就直接将结果{11}赋值给s1
s1.symmetric_difference_update(s2) 同上
2)删除:
s1 = {11,22,33,}
s1.discard(11) ----删除11,如果删除111,不存在的元素不会报错
s1.remove(11) ----删除11,如果删除111,不存在的元素会报错
s1.pop() ----随机删除元素。
3)并集和交集:
s1 = {11,22,33}
s2 = {22,33,44}
这个是交集(intersection)。
这个是并集(union)
小练习
题目:
old_dic ={‘#1‘:8, ‘#2‘:4, ‘#4‘:2} new_dic = {‘#1‘:4, ‘#2‘:4, ‘#3‘:2} old_set = set(old_dic.keys()) new_set = set(new_dic.keys()) del_list = list(old_set.difference(new_set)) add_list = list(new_set.difference(old_set)) updat_list = list(old_set.intersection(new_set)) print(del_list,add_list,updat_list) for i in updat_list: if old_dic[i] != new_dic[i]: print(i,)
三,函数详解:
1,定义函数:
上图:是函数的定义方法。
2,执行函数:
练习:发邮件
def mail(): import smtplib from email.mime.text import MIMEText from email.utils import formataddr msg = MIMEText(‘邮件内容‘, ‘plain‘, ‘utf-8‘) msg[‘From‘] = formataddr(["武沛齐",‘[email protected]‘]) msg[‘To‘] = formataddr(["走人",‘[email protected]‘]) msg[‘Subject‘] = "主题" server = smtplib.SMTP("smtp.126.com", 25) server.login("[email protected]", "WW.3945.59") server.sendmail(‘[email protected]‘, [‘[email protected]‘,], msg.as_string()) server.quit() mail()
在没有参数的情况下,直接mail()就可以执行整个函数。
3,参数:
def send(xxoo,content,xx=‘d‘): #xxoo和content就是形式参数,xx是默认参数,必须放在最后
print(xxoo,content,xx)
# return True
return xxoo #返回值 出现返回值整个函数就终止。
#res = send(‘a‘,‘b‘,‘c‘)
#res = send(‘a‘,‘b‘)
res = send(content=‘a‘,xxoo=‘b‘) #直接定义形式参数,可不按照顺序
print(res)
详解return:
详解形式参数:
动态参数:
*args -----*形式参数会接收全部参数,以元祖形式出现(动态参数)
**args -----** 指定参数 变成字典 -**形式参数,字典
万能参数:* ** *在前 ** 在后
1)*args
def f1(*args): print(args,type(args)) li = [1,2,3,4,1,23,] #f1(li) f1(li)
2)**kwargs
def f1(**kwargs): print(kwargs,type(kwargs)) li = {‘k1‘:‘v1‘,‘k2‘:‘v2‘} #f1(k1=‘v1‘) f1(**li)
3)万能函数:
def f1(*args,**kwargs): print(args) print(kwargs) f1(1,2,3,4,k1=‘v1‘)
4,补充:
字符串format:
函数创建:
函数参数传递时引用
全局变量(作用域)----所有的地方都能读 优先用自己变量
----列表字典可修改,不可以重新赋值
5, 三目运算:
if 1==1:
name = ‘alex‘
else:
name = ‘sb
name = ‘alex‘ if 1==1 else ‘sb‘ #三目运算表达式。
6,lambda:
def f1(a1): return a1 + 100 f2 = lambda a2,a1=10:a2+120 res1 = f1(1) res2 = f2(20) print(res1) print(res2)
7,内置函数简介:
abs()绝对值
all()
any()
n = all([1,2,3,4,45,5,0])
print (n)
bin() 10 -2
oct() 10 -8
hex() 10 -16
进制的 转换
代码测试:
n = abs(-10) print(n) n1 = all([10,1,2,3,4,5,0]) print(n1) n2 = any([1,2,3,0,[]]) print(n2) print(bin(10)) print(oct(10)) print(hex(10))
字符问题:
代码如下:
s = ‘李杰‘ n = bytes(s,encoding=‘utf-8‘) print(n) f =open(‘db‘,‘ab‘) f.write(bytes(‘立即‘,encoding=‘utf-8‘)) f.close() f = open(‘db‘,‘rb‘) n=f.read() print(n,type(n))
四,文件处理:
1,打开文件,
r 读
w 写 先清空
x 文件存在就报错,不存在,创建并写内容=w
a 追加 --- 永远会写在最后
常用的r+可以按照指针进行修改
a+永远会写在最后
w+会清空后再写
如果模式无B按照字符读取。
seek按照字节找位置(永远是字节)
tell 获取当前的指针位置以字节的位置调整
2,操作文件:
read() 无参数,读全部
有参数 b 按照字节
无b按照字符
flush()强刷
readline 仅仅读取一行
truncate 截断,指针后面的 清空。
for循环文件对象,
for line in
3,关闭文件:
close()
with open(‘db‘) as f:
pass
以上是关于python之day3的主要内容,如果未能解决你的问题,请参考以下文章