首页 > 技术文章 > python全栈-Day 9

txbbkk 2018-08-01 09:42 原文

整体课程安排

1、Python基础

  • 基础数据类型
  • 流程控制:条件判断和各种循环
  • 函数
  • 面向对象和模块
  • 网络编程
  • 并发编程

2、什么叫文件处理:从内存——硬盘的过程叫文件处理的过程

3、什么叫数据库:存储数据和信息,本质上和文件没有区别,增删改查相对文件更加方便了

4、前端:html、css

5、框架:django

6、操作系统,Linux基础

 

复习文件处理

1、打开文件

  • open(‘文件路径’,‘操作方式’,‘编码方式’):

2、操作文件

  • 读 read
  • 写write
  • 光标seek、tell、truncate(截取文件)

3、关闭文件

  • close

4、修改文件:文件是不能修改的,可以将操作后的文件写到另一个文件,再重命名到原文件名

with open('wj_txt',encoding='utf-8',mode='r') as f1,\
        open('wj_txt.bak',encoding='utf-8',mode='w') as f2:
    for line in f1:
        if '王静' in line:
            line = line.replace('王静','王静修改后')
        f2.write(line)
#删除文件 和重命名文件
import os
os.remove('wj_txt')  #删除文件
os.rename('wj_txt.bak','wj_txt')  #重命名文件

 

 

一、初始函数、返回值、参数

1、函数定义了之后,可以在任何需要它的地方调用。函数的作用:可读性强,复用性强

调用函数之前,需要先定义函数。因此,必须将函数写到上方,再将调用函数的代码写在下方

  • 内置函数:len等,自定义函数:自己定义的函数
  • 自定义函数

2、自定义函数的结构(遇到return就结束函数,return可以返回多个值,return可有可无,参数可有可无)

  • def 函数名(参数):    #定义函数
  •      函数体
  •      return 返回值

3、返回值个数

  • 没有返回值:不写return/只写return/return None
  • 一个返回值:return一个变量。接收返回值:接收变量名 = 函数名(参数)
  • 多个返回值:接收函数返回值,可以用一个变量接收多个返回值,此时得到一个元组,也可以用相同个数的变量接收多个返回值,原因是因为元组可以解包,即a,d,c = (1,2,3)----元组、列表、字典均可以解包

4、形式参数(形参)--暂时不知道需要的参数类型,在函数定义的时候用到

  • 位置参数:对应实参必须传的参数。定义函数的时候,则直接写参数名
  • 默认参数:对应实参可以不传实参的参数,又叫关键字参数,如果不传实参,就使用默认值。定义函数的时候,则写:参数名 = 默认值
    def classmate(name,sex = '男'):
        print('{}:{}'.format(name,sex))
    
    classmate('王静','女')
    classmate('汪晓')
  • 动态参数:
    • *参数名(习惯为:*args),可以接收任意多个按照位置传参的参数,对应的参数是 元组的类型
    • **参数名(习惯为:**kwargs),可以接收任意多个按照关键字传参的参数,对应的参数是 字典的类型
    • 动态参数的传参方式1----
      def func(*args,**kwargs):
          print(args,kwargs)
      
      func(1,2,3,l = [1,2,3],a = (1,2,3))
    • 动态参数的传参方式2----
      def func(*args,**kwargs):  #站在形参的角度上,给参数加*就是将传过来的所有值组合成元组,加**就是将传过来的键值组合成字典
          print(args,kwargs)
      
      l = [1,2,3,4,5]
      dic = {'wangjing':18,'wangxiao':20}
      func(*l,**dic)  #站在实参的角度上,给序列加*就是将序列按照顺序打散,加**就是将字典按照关键字的顺序打散
  • 定义函数的时候,必须先定义 位置参数,再定义 关键字参数。总体顺序为:位置参数--*args--关键字参数--**kwargs

5、实际参数(实参)--已知参数,在函数调用的时候用到

  • 调用函数的时候,如果按照位置传参,则直接写参数的值
  • 调用函数的时候,如果按照关键字传参,则写:关键字 = 值
  • 在调用的时候,不管对应的形参是位置参数还是默认参数,都可以 按照位置传参 或者 按照 关键字传参

6、参数个数

  • 没有参数:定义参数和调用参数的括号中均为空
  • 一个参数:形参的类型需要和实参类型一致
  • 多个参数:在形参参数的角度上,位置参数必须有对应的实参,对应形参和实参的类型需要一致
    • 在实参的角度上,按照位置传参,调用的时候 第n个参数传给第n个形参,此时叫 位置参数
    • 在实参的角度上,按照关键字传参,调用的时候 按照形参=实参的形式传参
    • 以上二者可以混用,但是要注意先按照位置传参,在按照关键字传参
    • 不能给同一个变量传多个值
    • 在形参的角度上,位置参数必须传

7、函数的注释

  • def fuc():
  •     '''
  •     这个函数实现了什么功能
  •     参数1、2、3、4.。。是什么作用和数据类型
  •     返回值是什么
  •     '''
  •     pass

8、默认参数的陷阱

  • 如果默认参数的值是一个可变数据类型,那么每一次调用函数的时候,如果不传值,就共用这个数据类型的资源
    def qqxing(k,l = {}):
        # l.append(1)
        l[k] = 'v'
        print(l)
    
    qqxing(1)     #{1: 'v'}
    qqxing(2)     #{1: 'v', 2: 'v'}
    qqxing(3)     #{1: 'v', 2: 'v', 3: 'v'}
    qqxing(1)     #{1: 'v', 2: 'v', 3: 'v'}
    qqxing(1)     #{1: 'v', 2: 'v', 3: 'v'}

二、考试试题讲解

1、这个以后有空的时候再看吧~~~

 

推荐阅读