Python函数专题--函数的基本概念

Python函数专题–函数的基本概念

函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。

定义一个函数
你可以定义一个由自己想要功能的函数,以下是简单的规则:

函数代码块以 def 关键词开头,后接函数标识符名称和圆括号 ()。
任何传入参数和自变量必须放在圆括号中间,圆括号之间可以用于定义参	数。
函数的第一行语句可以选择性地使用文档字符串—用于存放函数说明。
函数内容以冒号起始,并且缩进。
return [表达式] 结束函数,选择性地返回一个值给调用方。不带表达式的	return相当于返回 None。
函数能提高应用的模块性,和代码的重复利用率


函数的分类
|-- 讲分类,一定要提标准
|-- 通过有无参数
	|-- 有参函数
	|-- 无参函数
		将来的代码,我们函数定义者和函数的调用者不一定是一个人
|-- 有无返回值
	|-- 有返回值的
	|-- 无返回值的
		如果函数运行完成,需要将某个结果给调用者 return 结果

格式:Python 定义函数使用 def 关键字,一般格式如下:

def 函数名(参数列表):
		  函数体

全局变量和局部变量:全局流程下定义的变量以及函数体内部定义的变量
在内存中函数的调用

1、解释性的语言代码是从上而下执行的!!!

2、函数的调用过程
	函数的调用过程,叫做压栈,等函数执行完成后,函数就立刻出栈(弹栈)

3、在函数中使用全局变量问题
	在Python中,函数如果修改全局变量,一定要声明
	global 全局变量

4、值传递和引用传递问题
参数
以下是调用函数时可使用的正式参数类型:
默认值参数:调用函数时,如果没有传递参数,则会使用默认参数,在函数的参数括号内默认给定的
		
命名参数(关键字):传入的参数类似这种name="runoob"  赋值命名类的参数
可变参数(不定长):分为*args  接受多余的变量默认存在元组中   **args接受多余的命名参数默认存在字典里
万能参数:一般参数后面加*args **kwargs来接受全部参数
函数递归
函数递归:
 递归函数的优点:定义简单,逻辑清晰。理论上,所有的递归函数都可以写成循环的方式,但循环的逻辑不如递归清晰。

 递归函数的缺点:使用递归函数需要注意防止栈溢出。在计算机中,函数调用是通过栈(stack)这种数据结构实现的,每当进入一个函数调用,栈就会加一层栈帧,每当函数返回,栈就会减一层栈帧。由于栈的大小不是无限的,所以,递归调用的次数过多,会导致栈溢出。
 例子:
 def sum(n):
		    if n > 0:
		       return n + sum_recu(n - 1)    #调用函数自身
		    else:
	       	 return 0


print("递归叠加-->",sum(100))

#实现的效果是:5050
匿名函数
python 使用 lambda 来创建匿名函数。

所谓匿名,意即不再使用 def 语句这样标准的形式定义一个函数。

lambda 只是一个表达式,函数体比 def 简单很多。
lambda的主体是一个表达式,而不是一个代码块。仅仅能在lambda表达式中	封装有限的逻辑进去。
lambda 函数拥有自己的命名空间,且不能访问自己参数列表之外或全局命名空间里的参数。
虽然lambda函数看起来只能写一行,却不等同于C或C++的内联函数,后者的目的是调用小函数时不占用栈内存从而增加运行

语句:lambda [参数1, 参数2... n]:语句
lambda x,y:x + y  ===		def add(x, y):
												return x + y
注意:在Python,lambda虽然简化了代码书写,增强了代码维护成本,代码的可读性下降了
return语句
return [表达式] 语句用于退出函数,选择性地向调用方返回一个表达式。不带参数值的return语句返回None
全局函数
查看python的所有全局函数
>>> import builtins
>>> dir(builtins)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值