第八章 函数设计与应用

第八章 函数设计与应用

一、函数定义和使用

1、基本语法

def 函数铭([参数列表]):

​	""注释""

​	函数提

2、递归函数

函数在执行过程中又调用了函数自己

回文:

def isPalindrome(text):
	if len(text)<=1:
		return True
	if text[0]!=text[-1]
		return False
	return isPalindrome(text[1:-1])

3、函数嵌套定义

修饰器

二、函数参数

1、位置参数

常用参数,调用函数时的实参和形参顺序必须严格一致,数量必须相同。

def demo (a,b,c):

	print(a,,b,c)

2、默认值参数

def 函数名(.....,形参名=默认值):

	函数体

3、关键参数

参数按照参数名传值

demo(c=1,b=7,a=4)

1 7 4

4、可变长度参数

形参对应的参数数量不确实,一个形参接受对个实参。

*p接受多个实参,并放置到元组

>>> def domo(a,b,c,*p):
	print(a,b,c)
	print(p)
>>> demo(1,2,3,4,5,6)
123
(4,5,6)

**p接收任意多个关键参数并放入字典

>>> def demo(**p):
	for item in p.items():
		print(item)
>>> demo(x=1,b=4)
('x',1)
('b',4)

三、变量作用域

1、局部变量:部分函数区域影响

2、全局变量

global x

3、nonlcal变量

4、内置对象

四、lambda表达式

声明匿名函数,没有名字,临时使用

常用在临时需要一个函数的功能,但不想定义函数的场合

只能包含一个表达式,部运行包括选择结构和循环结构等语法

lambda arguments: expression
#arguments:是输入到函数中的参数,可以有多个,用逗号隔开。
#expression:是一个单一的表达式,lambda 函数返回这个表达式的结果。


add = lambda x, y: x + y  
print(add(5, 3))  # 输出 8


# 使用 map() 和 lambda 来对一个列表中的每个元素进行平方  
numbers = [1, 2, 3, 4, 5]  
squared = map(lambda x: x**2, numbers)  
print(list(squared))  # 输出 [1, 4, 9, 16, 25]  
  
# 使用 filter() 和 lambda 来过滤出偶数  
numbers = [1, 2, 3, 4, 5, 6]  
even_numbers = filter(lambda x: x % 2 == 0, numbers)  
print(list(even_numbers))  # 输出 [2, 4, 6]  

五、生成器函数

yield关键字用于定义生成器函数(generator functions)。生成器函数允许你创建一个迭代器,它可以在需要时逐个生成值,而不是一次性生成所有值。这使得生成器在处理大量数据或无限序列时非常高效,因为它们只占用与当前产生的值相对应的内存。

如:

def square_generator(n):  
    for i in range(n):  
        yield i ** 2  
  
# 使用for循环遍历生成器并打印每个值  
for square in square_generator(5):  
    print(square)
    
0  
1  
4  
9  
16

#斐波那契数列
def fibo():
    a,b=1,1
    while True:
        yield a
        a,b=b,a+b
        
seq=fibo()

for num in seq:
    if num>500:
        break
    print(num,end=' ')
    
   
1 1 2 3 5 8 13 21 34 55 89 144 233 377 

posted @ 2024-03-01 15:38  &*p櫎掀升  阅读(6)  评论(0编辑  收藏  举报