函数基础(一)(day10整理)

目录

  • 昨日内容
    • 文件的基本应用
      • 什么是文件
    • 操作文件的流程
    • 打开文件的三种模式
      • 文件打开的两种方式
    • 绝对路径和相对路径
      • 绝对路径
      • 相对路径
    • with管理文件上下文
    • 文件的高级应用
      • 新的打开文件的模式
      • 光标移动的应用
    • 文件的修改
  • 今日内容
    • 函数的定义
    • 定义函数的三种形式
      • 空函数
      • 有参函数
      • 无参函数
    • 函数的调用
    • 函数的返回值
      • return的特性
    • 函数的参数
      • 形参
      • 实参
    • 可变长参数
      • 可变长形参
      • 可变长实参

昨日内容

文件的基本应用

什么是文件

操作系统提供的虚拟概念,用来存储信息

操作文件的流程

  1. 打开文件(open)
  2. 修改文件(write/read)
  3. 保存文件(flush)
  4. 关闭文件(close)

打开文件的三种模式

  1. r(只读)
  2. w(清空后写入)
  3. a(追加写入)

文件打开的两种方式

  1. t 文本模式(文本文件)
  2. b 二进制模式(音频/图片/视频)

两种方式一般不单独使用

绝对路径和相对路径

绝对路径

从盘符开始

相对路径

相当于当前执行文件的文件夹下的所有文件

with管理文件上下文

跳出with缩进外,会自动关闭文件,可以一次性打开多个文件

文件的高级应用

新的打开文件的模式

  1. r+,覆盖光标后(文件头)的内容
  2. w+,w清空文件,读的功能失去了意义
  3. a+,a让光标移到文件位

如果真要即写又读,打开两次文件

光标移动的应用

  1. read,以字符为单位,读取n个字符,默认读取全部

以下三个方法以字节为单位

  1. seek:移动光标的位置,0表示文件头,1表示当前位置,2表示文件末尾
  2. tell:告诉光标当前位置
  3. truncate:阶段处理,truncate(0),清空文件

文件的修改

文件没有插入,只有覆盖的说法

with open('test.py','r',encoding = 'utf8') as fr,\
open('test_swap.py','w',encoding = 'utf8') as fw:
    data = fr.read()
    data = data.replace('sb','s')
    
    fw.write(data)
    fw.flush
    
#    for line in fr:
#        line = line.replace('sb','s')
#        fw.(line)
#        fw.flush

import os

os.remove('test.py')
os.rename('test_swap.py','test.py')

今日内容

函数的定义

def 函数名(等同于变量名):
    """对函数的描述信息"""
    代码块

函数定义的特性:函数定义过程,只检测语法,不执行代码

示例:

def guess():
    """给定两个数,打印较大的数"""
    s = 10
    y = 20

    if s > y :
        print(s)
    else:
        print(y)
        
        
print(guess._doc_)  # 打印注释内容
print(len._doc_)  # 打印len内置方法的作用

定义函数的三种形式

空函数

def func():
    pass

有参函数

def guess(x,y):
    """给定两个数,打印较大的数"""

    if x > y :
        print(x)
    else:
        print(y)

无参函数

def guess():
    """给定两个数,打印较大的数"""
    s = 10
    y = 20

    if s > y :
        print(s)
    else:
        print(y)

函数的调用

使用函数 guess(),加括号可以区分变量名

guess()  # 调用函数 
print(guess)  # 函数的地址

函数的返回值

返回值:返回一个值

def guess():
    """给定两个数,打印较大的数"""
    s = 10
    y = 20

    if s > y :
        return s
    else:
        return y
    
num = guess()
print(num)  # 20

return的特性

  1. return返回一个返回值(所有数据类型)
  2. 没有return默认返回None,如果没有返回值也返回None
  3. return会终止函数,不运行下面代码,假设有多个return,运行到第一个就会终止
  4. return可以返回多个值,返回值以元组的形式接收

函数的参数

形参

定义函数阶段的产物,具有接受实参的作用,具有描述意义

def guess(x:int,y:int = 30)->list:
    """给定两个数,打印较大的数"""
   
    if s > y :
        print(s)
    else:
        print(y)
  1. :后面规定的参数的数据类型,约定俗成
  2. ->规定的是return的数据类型

位置形参

从左都右,依次接受实参的值

默认形参

  1. 如果调用时不传值,使用默认值:如果传值了,使用传的值
  2. 默认形参必须放在位置形参后面

实参

调用阶段的产物,传给形参一个具体的值,具有具体的值(可以为所有数据类型)

位置实参

从左到右依次给位置形参传值,一一对应

关键字实参

  1. 按照形参名给形参传值(使用情况基本没有)
  2. 关键字实参必须在位置实参后面

函数的参数一般0~3个,一般,不要超过三个

可变长参数

*把多余的值接收

可变长形参

def min_4(*lt):  # 把所有传过来的实参全部接收,并且以元组的形式存储
    a,b,c,d,*_ = lt
    res1 = min_2(a,b)
    res2 = min_2(c,d)
    
    return min_2(res1,res2)

res = min_4(1,2,3,4)
print(res)

    

可变长实参

def min_4(a,b,c,d):
    res1 = min_2(a,b)
    res2 = min_2(c,d)
    
    return min_2(res1,res2)

lt = [1,2,3,4]
res = min_4(*lt)  # 相当于做了解压缩,也就是把lt内的元素一个一个取出来传给形参

你可能感兴趣的:(函数基础(一)(day10整理))