1.python中函数概述
概念
模块化编程的思想
有组织,可共享(重复使用,实现特定的功能的代码块)
提高程序的可维护性,提高开发效率,提高代码的重用性
定义一个函数
1.语法:def 函数名称(形参列表):函数体/代码块return 返回值
2.定义参数介绍
def :关键字 用于函数的定义,函数的构建,表示当前正在定义一个函数
函数名称: 函数的名字,方便调用函数
():定义函数,向3函数中传递所有参数 需要在此处定义
函数体:以 冒号开头,缩进表示区域,多行代码组成
return: 表示函数的结束,返回一个结果给调用方,可以省略不写,返回一个None
3.函数名称的命名规则遵循标识符的命名规则不能使用系统内置的函数名称,避免函数的冲突和覆盖
函数的调用
自定义变量 = 函数名称(实参列表)
函数需要调用才执行
调用的次数没有限制
函数的类型
系统内置的函数u()print()
自定义函数()
2.函数氵参数
参数的类型
形参: 定义函数时,在()中定义的形式参数,在函数调用时才分配空间,函数调用完毕后回收空间形参是有一定的生命周期的
实参: 函数被调用时,在()中填入的参数,实际数据
2.形参
类型1:普通参数,以正确的顺序和数量声明的参数
类型2:关键字参数,函数调用时使用关键字参数来确定传入的数据,允许函数嗲用是参数顺序和申明时不一致
类型3:默认参数 在调用时,实参可以不传递,当前默认参数需要在普通参数后面定义
命名关键字参数
这个*就是用来分隔关键字参数和普通参数的
*本身不是一个参数
参数的顺序
普通参数 默认参数 收集参数在实参前面加上*,会将容器类参数,拆分出来进行传递
4.返回值
有返回值的函数:使用 return 返回结果
没有返回值的函数执行过程的函数,不需要接受最终的 处理结果+
return 关键字返回多个值 也OK
python中函数参数和返回值
返
python中函数文档
help()查看函数文档
__doc__ 查看函数文档
自定义函数文档在函数的代码块的开头使用多行注释 描述函数的说明有一种函数叫做匿名函数,匿名函数就是没有名字呗lambda表达式->创建匿名函数语法:lambda 参数列表 : 函数体(方法体)案例:add = lambda a,b : a+bprint(add(1,2)
python中函数参数的传递
python中变量的生命周期
可更改对象和不可更改对象可更改对象:在内存中存储的数据是允许更改的list dict不可更改对象: 在内存中复制一个空间 相当于创建了一个父本一样Number String tuple set参数的传递传递的参数是不可更改对象: 值传递传递的参数是可更改对象: 地址传递
五 变量的生命周期和作用域
变量的作用域
定义在函数内的变量,具有局部作用域
定义在函数外的变量,函数外,具有全局的作用域
作用域
全局变量:在函数外部声明的变量,具有全局作用域在函数外部和函数内部正常访问和操作
局部变量:在函数内部声明的变量,具有局部的作用域在函数内部进行访问查看当前可以使用的局部变量locals() 返回值 字典类型的当前函数的可以使用的局部变量 globals() 查看当前位置的所有的全局变量
变量作用域的转换
将局部变量转换为全局变量global 变量名使用global 提升了的变量才是严格意义上的变量,后续可以对其进行各种操作而直接在函数外声明的全局变量,只可以才局部进行访问,无法进行修改等而其他 操作global 对于当前位置来说,知识当前提升了 其他函数也是相当于普通的外部变量,但是无法修改其变量值num1 = 1def f1():函数内部可以访问,num1,不能修改num1在当前位置提升变量的作用域 def f2():num2 = 2,局部变量,在外部访问num2,在当前位置 用global修饰就可以在外部访问num2了在当前位置,可以修改,无法修改
回顾
重点:定义格式调用实际参数 *函数文档这个可有用的函数参数各种 类型的参数 的传递函数返回值多个值的情况变量的作用域global变量的声明周期(可变对象和不可变对象)参数的值传递和地址传递能不能改的问题
作业
1. 打印1-100之间所有能被7整除但是不能被5整除的所有数2. 简易计算器: 实现 加 减 乘 除编写计算器函数 (调用这个计算器函数) 1. 从控制台打印如下图形123456234567345612456123561234612345