什么是函数(function):
函数:具有名称的,可以实现特定功能的代码集合C语言中的面向过程(函数),代表一个行为,一个动作
python定义函数:
def 函数名称([形参列表]):
(Tab)函数体
(Tab)return 函数的返回值
注:1.形参列表可以有也可以没有
2.函数使用关键字 def( define function)
调用函数:
函数不会自身执行,必须通过调用来执行
调用函数:
函数名称([实参列表])
注:1.如果形参列表没有值,实参列表也可以没有
2.调用多少次函数,则就会打印出多少次函数内容
def show_info():
print("我的名字叫做……")
print("我来自于……")
print("我今年19岁")
# 调用函数
show_info()
show_info()
show_info()
def show_info02(name, age, gender, address):
print(f"我的名字叫做{name}")
print(f"我来自于{address}")
print(f"我今年{age}岁,是一个花季美少{gender}")
show_info02("张三", 16, "男", "西北高原")
show_info02("李四", 21, "女", "西南成都")
show_info02("赵武", 22, "男", "宁夏灵武")
函数的分类:
有没有参数:
1.有参函数
2.无参函数
有没有返回值:
1.有返回值的函数
2.无返回值的函数
def add(x, y):
"""
如何函数需要将结果返回给调用者,
则可以使用return关键字返回结果
"""
return x + y
count = add(7, 3)
print(count)
注:没有返回值的用
a = show_info()
print(a)
打印的结果是None
判断一个数是否是质数:
def isPrime(num):
"""
文档注释,好处就是可以使用
help函数调用到你写的注释
"""
for i in range(2, num // 2 + 1):
if num % i == 0:
return False
return True
for i in range(2, 100):
if isPrime(i):
print(f"{i}是质数")
return关键字的使用:
只能出现在函数中,函数执行到return关键字,则函数会立刻结束执行,并且返回return的结果
ctrl+/ 注释
局部变量/本地变量(local variable)和全局变量(global variable):
局部变量:定义在函数内部的变量,局部变量
全局变量:定义在脚本内部的变量
注意:1.在python中,函数内部不能修改全局变量!!!
2.函数外部不能调用局部变量
3.如果一定要在python函数中修改全局变量,首先需要声明!!!用global (变量)进行声明
# 全局变量
age = 10
name = "小花"
def varibales():
# 声明需要在该函数中修改全局变量age
global age
# 局部变量
gender = "男"
# 小花长了一岁
age += 1
print("你的名字是:", name)
print("你的年龄是:", age)
print("你的性别是:", gender)
varibales()
函数调用的内存分析:
函数在内存的调用问题
堆(heap):内存中最大的区域,数据结构
栈(stack):空间很小,每个程序开始运行的时候,它会分配一个运行栈
内存溢出:
内存不够使用
内存泄露:
垃圾内存没有得到回收
注:1.整个运行栈,就是整个程序的运行轨迹
2.函数本质就是一个堆内存,它的大小和空间不可控
3.函数调用,在内存的角度上来说,就是一种压栈 *** 作(push)(把数据推入到栈里面去)
4.函数的调用结束叫做出栈或者d栈(pop)
python函数参数问题:
1.默认值参数
2.可变参数
3.命名参数
……
1.默认值参数
# 常规参数,就是位置参数
# 在定义形参的时候,直接给定一个默认值
# 这个是就默认值参数(default arguments)
def get_circle_area(r, PI=3.14):
return r * r * PI
print(get_circle_area(5))
print(get_circle_area(6))
注:没有默认值的参数(普通参数)不能跟在默认值参数的后头
2.可变参数
得到的是列表
# 常规参数,就是位置参数
# 在定义形参的时候,直接给定一个默认值
# 这个是就默认值参数(default arguments)
def get_circle_area(r, PI=3.14, *args):
if len(args) >= 1:
print(args[0])
return r * r * PI
print(get_circle_area(5, 3.14, 12,1,3,3,4,54))
3.关键字参数
得到的是字典
# 常规参数,就是位置参数
# 在定义形参的时候,直接给定一个默认值
# 这个是就默认值参数(default arguments)
def get_circle_area(r, PI=3.14, *args, **kwargs):
print(args)
print(kwargs)
print(kwargs.get("name"))
return r * r * PI
print(get_circle_area(5, 3.14, 12,1,3,3,4,54, name="ljh", age=16))
函数递归(recursion)
1、函数自身调用自身
2、要有终止条件
例:求0~100和
def get_count(n):
"""使用递归完成0~n的和的求解"""
if n == 0:
return 0
return n + get_count(n - 1)
print(get_count(100))
递归是一个逆向思维
例如:上楼梯问题:青蛙上楼梯时,要么一次跳一个台阶,要么一次跳两个台阶,
当它调到第n个台阶的时候,共有多少种跳法
用 f(n) = f(n - 1) + f(n - 2)
def get_count(n):
if n == 1:
return 1
if n == 2:
return 2
return get_count(n - 1) + get_count(n - 2)
print(get_count(6))
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)