第四天
函数是什么
函数(function):为了解决某一问题,或者某些问题具有名称的代码集合。是一种功能、行为动作
为什么需要函数
解决代码的重复问题
python如何定义函数
关键字 def # define function
def 函数名称([参数列表]):
# 函数体
# 如果需要返回值,则使用return关键字返回结果
# [return 函数返回值]
如何调用函数
函数名称([实参列表])
函数分类:
|-- 通过函数是否存在参数
|-- 有参函数
|-- 无参函数
|-- 函数是否存在返回值
|-- 有返回值的
|-- 无返回值
|-- 函数定义者的角度
|-- 官方函数(python官方提供的各种)
|-- 第三方函数
|-- 自己定义的函数
def test():
print("测试函数0")
def test(x):
print("测试函数:",x)
def test(x,y,z):
print(f"测试函数:{x}{y}{z}")
def add(x,y):
return x+y
test()
test(1)
test(1,2,3)
sum = add(2+4)
注:自定义的函数和正常函数之间必须空两个空行,因为规范
局部变量和全局变量:
局部变量(本地变量:local variable):指的是定义在函数内部的变量
全局变量(global variable):直接定义在脚本中,在整体脚本中,都有效的变量
注意:python函数中全局变量不允许修改,不然会报错
如果一定要修改,要在函数中声明(global count)
函数的调用的内存分析:
函数的调用,在内存中是压栈调用
函数本质是对象,是存储在堆内存中的
函数的参数:
默认值参数(default arguments):
也就是,如果在定义函数时,其中有些参数将来调用时,绝大多数情况下,值是固定的,则
为了调用了方便,可以设置默认值参数。
可变参数(可赋值也可不赋值): *xxxx ---- 元组类型
命名(关键字)参数: **kwargs ----- 字典类型
def info(x,**y):
print("年龄:",x,"姓名以及联系方式:",y)
info(18,name="神奇海螺",tel="联系方式请咨询比奇堡通讯中心")
引用传递和值传递:
引用传递:传递时传递的是对象的地址(引用、指针),所以真正的操作是发生在堆内存中
值传递:仅仅传递值本身,传递后传给了局部变量(形参),调用完成后,局部变量则弹栈回收(pop)不会影响实参。
Python的main函数
匿名函数lambda表达式:
1、python的函数的参数,可以是任意类型,只要是对象即可。
2、在python,函数也是对象
匿名函数:
没有名称的函数,被称为匿名函数!!!
lambda表达式
lambda关键字
lambda [参数列表]: 函数体
# python的匿名函数
作业要求
作业1、将上节课的作业,统统使用函数封装一次
作业2、判断以下哪些不能作为标识符
A、a
B、¥a
C、_12
D、$a@12
E、false
F、False
作业3:
输入数,判断这个数是否是质数(要求使用函数 + for循环
作业4:求50~150之间的质数是那些?
作业5:打印输出标准水仙花数,输出这些水仙花数
作业6:验证:任意一个大于9的整数减去它的各位数字之和所得的差,一定能被9整除.
作业7:一个五位数,若在它的后面写上一个7,得到一个六位数A,若在它前面写上一个7,得到一个六位数B,B是A的五倍,求此五位数.
作业8:有一种最简真分数,它们的分子与分母的乘积都是140,把所有这样的真分数从小到大打印出来
作业9:某数被80除所得的商,不但是7的倍数,而且用2,3,4,5,6去
除余数都是1,求这 个自然数.
作业10:编程求出满足以下条件的三位数:它除以11所得的商等于它各位数字之和
作业11:有一堆硬币,每次只能拿一个或者两个,求最少多少次可以拿完硬币
[10, 8, 5, 3, 27, 99]
作业12:求1~100之间不能被3整除的数之和
作业13:给定一个正整数N,找出1到N(含)之间所有质数的总和
作业14:计算PI(公式如下:PI=4(1-1/3+1/5-1/7+1/9-1.......)
作业结果
2
3
4
5
6
7
9
10
12
14