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,)
test01

 

三,函数详解:

  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()
sendmail

    在没有参数的情况下,直接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的主要内容,如果未能解决你的问题,请参考以下文章

day3-函数介绍之匿名函数

Day3: Python学习笔记之计算机基础——网络片

python之day3(文件操作字符转码函数)

Day3-python基础之函数

Python学习day3--网络基础之网络协议篇

python基础知识(day3)