函数(function)py

本文详细介绍了Python中的函数定义、分类,包括有无返回值和参数的函数,以及局部和全局变量的使用规则。重点讨论了函数参数的默认值、可变参数和关键字参数的用法,并展示了匿名函数(lambda表达式)的应用。此外,还提到了Python3.8的新特性——函数参数类型声明,并给出了递归函数的概念和示例。
摘要由CSDN通过智能技术生成

具有名称的,是为了解决某一问题,功能代码的集合

目录

一.定义函数

二.函数的分类

三.局部变量和全局变量

1.局部变量(local variable)

2.全局变量(global variable)

四.函数调用的内存分析

五.函数的参数

1.默认值参数

2.可变参数(不定长参数)

3.关键字参数(命名参数)

六.匿名函数

七.python 3.8的新特性

八.递归(Recurresion)


一.定义函数

        def  function  name([arges]):

                #函数体

                #[return 返回值]

调用函数

        函数名称([实参列表])

def print_msg(name,age,adress):
	'''
		这是函数的注释
	'''
	print(f"我叫{name}")
	print(f"今年{age}岁")
	print(f"家住{adress}")


#调用函数
print_msg("长安",20,"西安")
print_msg("岁雾",21,"湖南")


#print(help(print_msg))
#__doc__魔法属性是调用注释
print(print_msg.__doc__)

二.函数的分类

1.根据函数是否存在返回值:有返回值的函数 return        无返回值的函数

2.根据函数是否存在参数:有参函数        无参函数

3.根据函数的定义者:系统函数        自定义函数        第三方函数

三.局部变量和全局变量

1.局部变量(local variable)

定义在函数内部的变量

2.全局变量(global variable)

定义在模块内,作用域是整体模块的变量

注意:1.python基于安全考虑,禁止在函数内修改全局变量。如果一定要修改,一定要声明

           2.局部变量无法在外界访问

           3.局部变量的作用域就在当前函数中

name = "长安"
age = 20

def show_info(a,b):
#修改全局变量,进行声明
	global age
	c = 10
	print(c)

	age += 18
	print(age)

show_info(10,20)
print(name)
print(age)

四.函数调用的内存分析

值传递:在传递参数时,仅仅是将值拷贝一份,传递给函数的参数,变量的值不会因为函数内部的改动而发生变化

引用传递:在传递参数时,传递的是地址(指针),因此函数内的形参。获取的值也是同一块内存,因此整个值是同时被修改

五.函数的参数

1.默认值参数

通过定义函数时,将可能调用时不怎么变化的参数给定默认值,在调用时方便调用

注意:位置参数不能写在默认值参数后面

def get_circle_area(radiu, PI=3.14):
	'''
		求圆的面积
	'''
	return radiu * radiu * PI


print(get_circle_area(1, 3.14))
print(get_circle_area(2))
2.可变参数(不定长参数)

在开发时,我们往往有时候可能存在,传递非常多的参数

采用元组作为封装数据类型

def get_circle_area(radiu, PI=3.14, *args):
	'''
		求圆的面积
	'''
	print(args)
	if len(args) >= 1:
		print(args[0])
	return radiu * radiu * PI


print(get_circle_area(1, 3.14))
print(get_circle_area(2))
print(get_circle_area(3, 3.14, 10, 23, 67, 8))
3.关键字参数(命名参数)

采用字典作为封装数据类型

def get_circle_area(radiu, PI=3.14, *args, **kwargs):
	'''
		求圆的面积
	'''
	print(kwargs)
	if len(kwargs) >= 1:
		print(kwargs.get('name',"无名氏"))


	return radiu * radiu * PI


print(get_circle_area(1, 3.14))
print(get_circle_area(2))
print(get_circle_area(3, 3.14, 10, 23, 67, 8))
print(get_circle_area(4, 3.14, 10, 23, 67, 8, name="长安",age=20 ))

六.匿名函数

        如果python,存在函数作为参数传递函数,又不想外界访问,而且参数函数足够简单,建议定义为匿名函数(lambda表达式)

lambda [arg1, arg2]:函数体

def print_msg(fn, msg):
	fn(msg)


# def test(info):
# 	print(info)


print_msg(lambda msg: print(msg), "你好,匿名函数!")

七.python 3.8的新特性

声明函数参数类型:python是一门弱数据类型语言

def add(x:int, y:float) -> float:
	return x + y


print(add(5, 8))

八.递归(Recurresion)

函数自身调用自身

#求斐波那契数列
def fibonacci(n):
	if n == 1:
		return 0
	if n == 2:
		return 1

	return fibonacci(n - 1) + fibonacci(n - 2)


print(fibonacci(3))
print(fibonacci(4))
print(fibonacci(5))
print(fibonacci(6))
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值