2020-11-15

本文详细介绍了Python编程中的函数概念,包括函数的定义、执行、返回值以及参数的使用,如默认值、可变长参数等。此外,还探讨了变量的作用域,包括全局变量和局部变量,并讲解了如何通过`global`关键字在函数内修改全局变量。文章进一步介绍了匿名函数`lambda`的使用,以及递归函数的概念,通过实例展示了如何计算阶乘。最后,提到了生成器函数,特别是如何利用`yield`创建斐波那契数列的生成器。
摘要由CSDN通过智能技术生成

函数:
对程序逻辑进行结构化或过程化的一种编程方式,写函数的目的是为了代码的重用。
def函数名([形参]):#定义函数
‘’‘注释’’’
函数体
函数名([实参]) #执行函数

函数的创建:
def printlnfo():
print(’---------’)
print(‘人生苦短,我用python’)
print(’---------’)
printlnfo()#执行函数

返回值:
return 表示把程序流程从被调函数转向主调函数并把表达式的值带回主调函数,实现函数值的返回,返回时可附带一个返回值,由return后面的参数指定。
程序一旦执行到return就会结束当前函数。当函数中没有return时,默认返回值是None
def add(a,b):
return a+b #返回a+b的值
c = add(1,2) #c = 3

参数:
def函数名字(参数1=数据1,参数2=数据2): #默认值参数
pass
函数名(参数1=数据1)#关键字参数
可变长参数
*args星号操作符之后的形参将作为元组传递给函数,元组保存了所有传递
**kwargs用于接收0个或者任意个的关键字参数,这里的关键字就是参数名字

参数顺序:
参数的顺序是位置参数,默认值参数,可变长参数
如果参数有多种类型,应按照一下这个顺序排序
第一个是位置参数 fun(a)
第二个是默认参数 fun(a,b=1)
第三个是可变长参数 fun(a,b=1,*c,**d)
在可变参数中,非关键字参数要在关键字参数前面

变量作用域:
变量的作用域就是定义的变量可以使用的代码范围
全局变量:是可以被所有的函数访问的,除非被删除掉,否则一直存在活到脚本运行结束
局部变量:只能在函数或代码块内部被调用,一旦函数或代码块执行完成,数据就会释放,引用比全局变量速度快,应优先考虑使用

变量的作用域:
当程序运行时,python先从局部作用域开始搜索变量,如果局部没有则从全局中找,找不到会抛出NameError,如果全局变量与局部变量重名,则内部访问则是局部变量,外部是全局变量
在函数中想要对全局变量进行修改,要用到关键字
global

匿名函数
lambda 参数1,参数2…:返回值
print((lambda x,y,z:x+y+z)(1,2,3))

递归函数:
程序调用自身的编程技巧称为递归(recursion)。
#使用递归方法实现5!
def fun(n):
if n == 1 or n == 0:
return 1
else:
return n * func(n-1)
print(fun(5))

要求输入一个数字表示是第几个数字,正确输出第n个斐波那契数
def fun(n):
if n < 0:
print(‘输入有误!’)
elif n ==1 or n == 2:
return 1
else:
return fun(n-1) + fun(n-2)
print(fun(6))

生成器函数:
我们之前学过元组生成器(i for i in range(10))
yield语句的函数也可以用来创建生成器对象
每次执行到yield语句并返回一个值之后会暂停或挂起后面代码的执行
下次通过生成器对象的_next_()方法、内置函数next()、for循环遍历生成器对象元素或其他方式显示”索要“数据”时恢复执行。

生成器–斐波那契
def f():
a,b = 1,1
while True:
yield a #暂停执行,需要时再产生一个新元素
a,b = b,a+b
a = f()
for i in range(10):
print(next(a),end=’ ')

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值