1.熟悉函数的使用及调用过程
2.熟悉函数的参数传递
3.熟悉局部变量和全局变量
4.了解lambda匿名函数
函数的理解和定义
·函数是一段具有特定功能的、可重复的语句组
·函数是一种功能的抽象,一般函数表达特定功能
·函数定义时,所指定的参数是一种占位符,定义后,如果不调用,不会被执行
"""
def <函数名>(<参数(0个或多个)>):
<函数体>
"""
#定义一个函数实现整数的幂运算,用以计算 x 的 n 次方。
def computer(x,n):
return pow(x,n)
a,b=map(int,input().split())
print(computer(a,b))
函数的调用
def computer(x,n):#函数定义
return pow(x,n)#函数调用后得返回值
a,b=map(int,input().split())
print(computer(a,b))#computer函数调用
函数参数传递
"""
def <函数名>():
<函数体>
return <返回值>
"""
def f():
print("test")
"""
def <函数名>(<非可选参数>,<可选参数>):
<函数体>
return <返回值>
"""
def fact(n,m=1):#m=1 可选参数
s=1
for i in range(1,n+1):
s*=i
return s//m
>>>fact(10)
3628800
>>fact(10,5)
725760
"""
def <函数名>(<参数>,*b):
<函数体>
return <返回值>
"""
def fact(n,*b):
s=1
for i in range(1,n+1):
s*=i
for item in b:
s*=item
return s
>>>fact(10,3)
10886400
>>>fact(10,3,5,8)
435456000
def fact(n,m):
s=1
for i in range(1,n+1):
s*=i
for item in b:
s*=item
return s
>>>fact(10,3)#位置传递
10886400
>>>fact(m=10,n=3)#名称传递
函数返回值
return保留字用来传递返回值
函数可以有返回值,也可以没有,可以有return,也可以没有
return可以返回0个返回值,也可以返回任意多个返回值(返回时一个元组类型)
局部变量和全局变量
规则1:局部变量和全局变量是不同变量
n,s=10,100
def fact(n):
s=1#局部变量s
for i in range(1,n+1):
s*=i
return s#此时是局部变量运算的结果3628800
print(fact(n),s)#此时是局部变量返回值3628800和全局变量s=100
n,s=10,100
def fact(n):
global s#此时s是全局变量
for i in range(1,n+1):
s*=i
return s#此处为全局变量
print(fact(n),s)#此时s为全局变量值
规则2:局部变量为组合数据类型且未创建,等于全局变量
ls=["a","b"]
def func(a):
ls.append(a)
return
func("c")#全局变量被修改
print(ls)# ls=["a","b","c"]
ls=["a","b"]
def func(a):
ls=[]#ls是局部变量
ls.append(a)
return
func("c")
print(ls)# ls=["a","b"]
lambda函数
"""
<函数名>=lambda <参数>:<表达式>
等价于
def <函数名>(<参数>):
函数体
return <返回值>
"""
1.了解代码复用和模块化设计
2.理解函数递归
代码复用
模块化设计
函数递归的理解
函数定义中调用函数自身的方式
两个关键特征
链条:计算过程存在链条
基例:存在一个或多个不需要再次递归的基例
"""
斐波那契数列
f(n)={
1 n=1
1 n=2
f(n-1)+f(n-2) otherwise }
"""
def f(n):#函数+分支
if n==1 or n==2:
return 1 #递归基例
else:
return f(n-1)+f(n-2) #链条
1.下面关于函数返回值的描述中,正确的是()
A python函数的返回值使用很灵活,可以没有返回值,可以一个或多个返回值
B函数定义中最多含有一个return语句
C 在函数定义中使用return语句时,至少给一个返回值
D 函数只能通过print语句和return语句给出运行结果
2.以下关于函数优点的描述中,正确的是()
A 函数可以表现程序的复杂度
B 函数可以使程序更加模块化
C 函数可以减少代码多次使用
D 函数便于书写
3.以下关于Python函数的描述中,错误的是()
A Python程序的main函数可以改变其他名称
B 如果Python程序包含一个函数main(),这个函数与其它函数地位相同
C Python程序可以不包含main函数
D Python程序需要包含一个主函数且只能包含一个主函数
4.函数定义了3个参数,其中2个参数都指定了默认值,调用函数时参数个数最少是()
A 0
B 2
C 1
D 3
5.关于以下代码的描述中,正确的是()
def func(a,b):
c=a**2+b
b=a
return c
a=10
b=2
c=func(b,a)+a
A 执行该函数后,函数c的值为112
B 该函数名称为fun
C 执行该函数后,变量b的值为2
D 执行该函数后,变量b的值为10
6.关于Python全局变量和局部变量的描述中,错误的是()
A 局部变量在使用后立刻被释放
B 全局变量一般没有缩进
C 全局变量和局部变量的命名不能相同
D 一个程序中的变量包含两类:全局变量和局部变量
7.以下的函数定义中,错误的是()
A def vfunc(s,a-1,*b)
B def vfunc(a=3,b)
C def vfunc(a,**b)
D def vfunc(a,b=2)
8.关于函数定义的描述,正确的是()
A 函数必须要有返回值
B 函数定义可以定义无限多个参数
C 函数定义的关键字是class
D 函数定义时默认值的参数是在非可选参数前面的
9.关于函数的定义与编写的描述,错误的是()
A 函数是代码复用的一种方式
B 在Python中,使用关键字define定义函数
C 定义函数时,即使函数不需要接收任何参数,也必须保留一对空括号来表示这个是个函数
D 编写函数时,一般建议先对参数进行合法性检查,然后进行编写
10.下面代码Dog这个类中的init方法共包含几个形参?
Class Dog:
def __init__(self,name,age):
self.name=name
self.age=age
A 0个
B 1个
C 2个
D 3个
答案 D
11.下面哪一种定义是类的私有成员()
A __xx
B xx
C__xxx
D xxx
一个下划线开头的是保护成员,两个下划线开头和结尾的是特殊成员,以两个和多个下划线开头并且不以两个或多个结尾的是私有成员
12.一个类继承另一个类,那么被继承的这个类称为()
A 超类
B 子类
C 类
D 继承类
13.Python中类定义中,对函数变量的访问形式为()
A <对象>.<变量>
B <对象>.方法(变量)
C <类名>.<变量>
D <对象>.方法
14.下面这条语句的输出结果是()
f=(lambda a="hello",b="python",c="world":a+b.split("o")[1]+c)
print(f("hi")
A hellopythonworld
B hipythworld
C hellonworld
D hinworld
15.关于递归函数,描述错误的是()
A 递归函数必须有一个明确的约束条件
B 递归函数就是一个函数在内部调用自身本身
C 递归效率不高,递归层次过多会导致栈溢出
D 每进入更深一层的递归时,问题规模相对于前一次是不变的
16.关于Python中实参和形参的说法错误的是()
A 在函数定义时的参数被称为形参,形参不是实际存在的变量
B 可选参数一般都放置在非可选参数的后面
C 实参必须是一个常量
D 形参存在的目的是用来接收调用函数时传入的实参
答案
注:Python基础课件完整电子书版可添加下面微信获取