第五次Python笔记

函数是什么?
函数对程序逻辑进行结构化或过程化的一种编程方式,写函数的目的是为了代码的重用。
def函数名([形参]):#定义函数
‘’‘注释’’’
函数体
函数名[实参] #执行函数 。
函数的创建
定义一个函数,能够完成打印信息的功能
def printlnfo():
print(’-----------------------’)
print(‘人生苦短,我用Python’)
print(’-----------------------’)
printinfo()#执行函数
返回值
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)#关键字参数
可变长参数
*arg星号操作符之后的形参将作为元组传递给函数,元组保存了所有传递
*kwargs用于接收0个或者任意个的关键参数,这里的关键字就是参数名
参数顺序
参数的顺序是位置参数,默认值参数,可变长参数
如果参数有多种类型,应按照以下这个顺序排列:
第一个是位置参数fun(a)
第二个是默认参数fun(a,b=1)
第三个是可变参数fun(a,b=1,*c,d)
在可变参数中,非关键字参数在关键字参数前面
函数优点
1.减少代码的重复
2.保持代码的一致性
3.方便修改,可扩展性
变量作用域
变量的作用域就是定义的变量可以使用到的代码范围
全局变量是可以被所有的函数访问的,除非被删掉,否则一直存活到脚本运行结束
局部变量只能在函数或代码块内部被调用,一旦函数或代码块执行完成,数据就会释放。引用比全局变量快,应优先考虑使用。
变量的作用域
当程序运行时,Python先从局部作用域开始搜索变量,如果局部没有则从全局找,找不到抛出NameError,如果全局变量和局部变量重名,则内部访问则是全局变量,外部是全局变量
在函数中想对全局变量进行修改,要用到关键字global
匿名函数
lambda 参数1,参数2…:返回值
print(lambda x,y,z:x+y+z)(1,2,3)
递归函数
程序调用自身的编程技巧称为递归(recursion)。
#使用递归方法实现
def func(n):
if n1 or n0:
return 1
else:
return n
func(n-1)
print(fun(5))
递归函数优缺点
递归函数的优点就是定义简单,逻辑清楚
缺点是递归效率不高,因为每一次调用都有相应的函数值存放在栈,而栈的空间是有限的
因此在写函数时要注意不可无线递归或者递归次数非常大
递归函数
要求输入一个数字表示是第几个数字,正确输出第n个斐波那契数
def fun(n):
if n<0:
print(‘输入有误!’)
elif n1 or n2:
return 1
else:
return fun(n-1)+fun(n-2)
print(fun(6))
生成器函数
我们之前学过元组生成器.(i for in range(10))
yield语句的函数也可以用来创建生成器对象.
每次执行到yield语句并返回一个值之后会暂停后面代码的执行
下次通过生成器对象的—next—()方法、内置函数next()、for循环遍历生成器对象元素或其他方式显示“索要”数据时恢复执行
生成器——斐波那契
def f():
a,b = 1,1
while True:
yield a #暂停执行,需要在产生一个新元素
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、付费专栏及课程。

余额充值