函数
没有函数时会有什么问题?
同样的代码需要写多次
一个功能的需求发生改变需要修改的地方太多
什么是函数:函数就是对实现某一功能的代码实现封装
函数的分类:内置函数和自定义函数。
内置函数:系统写好的函数,可以直接使用,例如:print函数,input函数,sum函数
自定义函数:程序员自己去创建的函数,
函数的声明:(不会执行函数体)
a. 固定格式
def 函数名(参数列表):
函数体
b. 说明:
def :python中声明函数的关键字
函数名:标识符,不能是关键字,PEP8(所有字母小写,多个单词用下划线隔开),见名知意
():固定格式,必须写
参数列表:参数1,参数2,参数3.。。,也可以没有参数
参数的作用是从函数的外面,向函数里面传值用的(将数据从函数外面传到里面)
函数体():实现函数功能的代码段。函数体里面可能会包含 return
注意:函数只有调用才会执行
函数调用
a.固定格式:
函数名()
b. 说明:
函数名:你要调用那个函数就写对应的函数名。函数只能先声明才能调用
实参列表:就是用来给形参传值的
函数的调用过程(重要)
a. 回到函数声明的位置
b. 使用实参给形参赋值(传参)
c. 执行函数体
d. 将返回值返回给函数调用者
e. 回到函数调用的地方,接着往后执行
# 写一个函数,打印一个整数的阶乘,N! = 12*3*4.....*N
def jie_chen(n):
m = 1
for i in range(1,n+1):
m *= i
print(m)
jie_chen(5)
参数:声明函数的时候的参数列表叫形参调用函数的时候,参数列表中的参数叫实参
传参:传参的过程就是使用实参给形参赋值的过程,一定保证每个形参都要有值
实参
位置参数:传参时实参的位置和形参的位置一一对应(第一个实参传给第一个形参,第二个实参传给第二个形参)
关键字参数:函数调用的时候通过'形参名=实参'的形式来传参
def fun1(a,b,c=0):
print(a,b,c)
#位置参数
fun1(1,2,3)
#关键字参数
fun1(b=1,c=2,a=3)
#关键字和位置参数结合
fun1(1,2,4)
参数的默认值
在声明函数的时候给参数赋默认值。
a.给部分参数赋默认值时,要求有默认值的参数必须放到参数列表的最后
b.调用有默认值的函数时可以不用传参,也可以传参。
def fun2(a=9,b='a',c=True):
print(a,b,c)
fun2(b='d')
不定个数参数
python通过在形参名前加*,让折耳根形参变为一个元祖,
来让这个形参可以同时接受多个形参。多个包含0个
写一个函数,计算多个数的和
def sum2(*i):
sum1 = 0
print(i,type(i))
for item in list(i[0]):
sum1 += int(item)
print(sum1)
l = '13141451'
sum2(l)
def sum3(a,b,*c):
print(a,b,c)
sum3('班级','分数',23,23,32,52,)
对参数的类型进行说明
python不能直接约束一个变量的类型。但是可以通过说明,来提示用户调用函数的时候,参数的类型
def func4(name:str,age:int,score:list):
print(name,age)
score.append(name)
print('====')
func4('abc',1,[1,2,41,])
return
返回值:函数的返回值就是return关键字后面的表达式的值,就是函数
调用表达式的结果
python中所有的函数都有返回值,默认是None
####写一个函数,打印'hello'
def say_hello():
print('hello')
#用一个变量保存函数调用的结果
re = say_hello()
print(re)
return关键字(return只能写在函数体)
a.确定返回值
b.结束函数(函数只要遇到return,函数就直接结束)
def fun1(n):
print(n)
return 100
# print('=====') # 不会执行
re = fun1(10)
print(re)
注意:看一个函数的返回值是多少,不是看函数中有没有return,而是看函数有没有遇到return.
遇到了就返回return后面的结果,否则就返回None
def judge(number):
if not number%2:
return True
else:
return False
print(judge(7))
什么时候函数需要返回值
只要实现函数功能会产生新的数据,就通过返回值将新的数据返回,而不是打印它
补充:判断一个值是否是指定的类型
isinstance(值,类型)---->返回值是布尔
1.写一个函数,统计列表中浮点数的个数
print(isinstance(10.0,int))
print(isinstance(10.0,str))
print(isinstance(True,int))
def statistic(lst:list):
n = 0
for num in lst:
if isinstance(num,float):
n += 1
return n
2.将一个数字列表中所有元素的值都变为原来的二倍
def multiply(lst:list):
for i in range(len(lst)):
lst[i] = lst[i]*2
return lst
def index(n,lst:list):
lst1 = []
for i in range(len(lst)):
if n == lst[i]:
lst1.append(i)
return lst1
3.写一个函数,获取指定元素对应的下标
a = statistic([1,2,3,4.4,2.3])
print(a)
b = multiply([1,2,3,4,5])
print(b)
c = index(2,[1,3,4,2,5,6])
print(c)
网友评论