1.函数基础
1. 什么是函数?
f(x) = x + 1
y = x + 1
函数是对功能或者动作的封装
函数名
尽量不要用重复的名字
变量的命名规范,以数字,字母,下划线,数字不能开头
函数参数
def 语句这里定义的是语法
class 定义的是一个类
2. 函数的语法和定义
这里的函数名的命名规则和使⽤和变量基本一样
def 函数名():
函数体: 就是函数被执行之后要执行的代码
函数的调用: 使用函数名可以调用函数,
函数名(), 这个时候函数的函数体会被执行
def yue(): print("拿出手机") print("看看电影") print("约约妹子") print("没有时间吃饭") return "小姐姐","大妈","流浪" #返回元组('小姐姐', '大妈', '流浪') ret =yue() print(ret) print("上班")
3. 关于函数的返回值
return : 返回函数内部处理完成后的数据对象
1. 当程序没写过return, 不返回任何结果. 如果你非要接收. 接受到的是None
2. 当函数写return 值, 有一个返回值.
3. 当函数写了return 值1, 值2, 值3.... 返回多个结果. 多个结果打包成元组
4. 当程序执行到return, 函数结束执行
def func(): a = int(input("请输入第一个数")) b = int(input("请输入第二个数")) c = a if a > b else b #c装的是a,b中大的数 三目运算 return c ret = func() print(ret)
4. 函数的参数(部分)
小括号是什么, 小括号表示调用, 传参
1. 什么是参数: 参数是给函数传递的信息
形参
在函数声明的位置写的变量
1. 位置参数
2. 默认值
3. 动态传参 *, **
实参
在函数调用的时候给函数传递的具体的值
1. 位置参数
2. 关键字参数
3. 混合: 位置, 关键字
传参
把实参给形参的过程
def yue(tools): # 形参 print("拿出手机") print("打开%s" % tools) print("找到一个心仪的小姐姐") print("没有时间啊") yue("微信") # 实参 yue("QQ") # 实参 yue("陌陌") # 实参
* 必备参数: > 在我们传递函数调用时的实参时,一定要和形参定义的顺序及个数一一对应 > myadd() missing 1 required positional argument: 'b' * 命名传参: > 显示的给形参赋值,那么可以打乱顺序,但是个数要注意 * 缺省参数: > 缺省参数他的定义顺序是**从右向左** > 实参的默认接受顺序是**从左向右**,如果缺省参数之后还有一个需要传递值的形参,那么可能因为缺省参数已经有值了,并且被覆盖了新的实参,而导致最后面这些形参没有默认值了,而报错 > 计算机不会做选择,二异性错误 -> SyntaxError * 不定长参数: * \*args: 来几个接收几个,并且在函数内部保存成一个元组 > 在使用的时候一定在是函数内部使用args,不加\*号的变量 **普通赋值\* 返回的是一个列表** **函数内部的形参 \* 返回的是一个元组** > 不能接收键值对的形参,只能接收普通的实参 * \*\*kwargs: 来几个接受几个,但是接收的实参是有规定的,必须是命名传参 > 必须键值对 > 接收到的不定长键值对实参,保存成了字典
混合传参
def chi(zhushi,fushi,tang,tiandian): print("主食:%s" %zhushi) print("副食:%s" %fushi) print("汤:%s" %tang) print("甜点:%s" %tiandian) chi(tiandian="哈根达斯",tang="酸辣汤","大米饭","锅包肉") #SyntaxError: positional argument follows keyword argument chi("大米饭","火锅","胡辣汤","哈根达斯") chi("大米饭","锅包肉",tiandian="哈根达斯",tang="酸辣汤")
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
文件操作 f = open(文件路径, mode="模式", encoding="编码") f: 文件句柄 文件的路径: 相对路径 相对于当前程序所在的文件夹 ../ 上一层文件夹 文件夹/ 进入文件夹 绝对路径 从磁盘根目录寻找 模式: r f.read() 读取文件中全部内容 f.read(n) 读取n个字符 f.readline() 读取一行 f.readlines() 读取全部, 返回列表 for line in f: 每次读取一行内容. 读完为止 w f.write() 写 a r+ w+ a+ 处理非文本文件 bytes rb wb ab 光标 (字节) seek(0) 移动到开头 seek(0,2) 移动到末尾 tell() 返回光标的位置 truncate(can) 1. 如果给了参数, 从头截取到参数位置 2. 如果不给参数, 从头截取到光标 文件的修改 import os with open("原文件", mode="r", encoding="utf-8") as f1, \ open("文件_副本" mode="w", encoding="utf-8") as f2: for line in f1: # 修改 f2.write(line) os.remove("原文件") os.rename("文件_副本", "原文件") 二. 作业 三. 今日主要内容(重点) 1. 什么是函数? f(x) = x + 1 y = x + 1 函数是对功能或者动作的封装 2. 函数的语法和定义 def 函数名(): 函数体 调用: 函数名() 3. 关于函数的返回值 return : 返回 1. 当程序没写过return, 不返回任何结果. 如果你非要接收. 接受到的是None 2. 当函数写return 值, 有一个返回值. 3. 当函数写了return 值1, 值2, 值3.... 返回多个结果. 多个结果打包成元组 4. 当程序执行到return, 函数结束执行 4. 函数的参数(部分) 小括号是什么, 小括号表示调用, 传参 1. 什么是参数: 参数是给函数传递的信息 形参: 在函数声明的位置写的变量 1. 位置参数 2. 默认值 3. 动态传参(明天) *, ** 实参: 在函数调用的时候给函数传递的具体的值 1. 位置参数 2. 关键字参数 3. 混合: 位置, 关键字 传参: 把实参给形参的过程