python(5)关于函数的所有基础知识

python(5)关于函数的所有基础知识,第1张

什么是函数(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))

   

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/874916.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-13
下一篇 2022-05-13

发表评论

登录后才能评论

评论列表(0条)

保存