函数
函数简介
函数也是⼀个对象 函数⽤来保存⼀些可执⾏的代码,并且可以在需要时,对这些语句进⾏多次调⽤,代码只有调用的时候才会执行
语法
def 函数名([形参1,形参2,形参3…]):
代码块
注意:函数名必须符合标识符的规范(可以包含字⺟、数字、下划线但是不能以数字开头) print是函数对象 print()是调⽤函数
函数参数
def fun(a, b):
# 函数的参数就是相当于在函数内部定义了这两个变量, 但是并没有给他们赋值 ab就是一个形参(形式上的参数)
print(a + b)
fun(1, 2)
# 调用函数 ,如果有形参,那么必须传递实参(实际的参数)
函数参数
形参(形式参数) 定义形参就相当于在函数内部声明了变量,但是并不是赋值 实参(实际参数)指定了形参,那么在调⽤函数时必须传递实参,实参将会赋值给对应的形参,简单来说有⼏个形参就要有⼏个实参
函数传递方式
定义形参时,可以为形参指定默认值。指定了默认值以后,如果⽤户传递了参数则默认值不会⽣效。如果⽤户没有传递,则默认值就会⽣效 位置参数:位置参数就是将对应位置的实参赋值给对应位置的形参
不定⻓参数
定义函数时,可以在形参前⾯加⼀个*,这样这个形参可以获取到所有的实参,它会将所有的实参保存到⼀个元组中 带*号的形参只能有⼀个,可以和其他参数配合使⽤ 带*形参只能接受位置参数,不能接受关键字参数 带**形参可以接收其他的关键字参数,它会将这些参数统⼀保存到字典当中。字典的key就是参数的名字,字典的value就是参数的值 带**形参只有⼀个,并且必须写在所有参数的后⾯
def fun(*a): #*a 不知道需要传入多少个参数 *只能是位置传参
print(*a)
print(a)
r=0
for i in a:
r+=i
print(r)
fun(2,3,4,5,7,8,1)
def fun(c,**a): #**a传参数后 a 变为字典
print(a)
fun(2,b=1,e=2,d=3)
参数的拆包
def fun(a,b,c):
print(a)
print(b)
print(c)
t=(1,2,3)
fun(t[0],t[1],t[2])
fun(*t)
作业
打印名⽚程序:输⼊姓名,电话号码,性别,最后打印出来名⽚控制姓名⻓度为6-20,电话号码⻓度11,性别只能允许输⼊男或⼥,每⼀样信息不允许为空。
def fun():
while True:
name=input('输入姓名:')
if 6<len(name)<20:
break
else:
print('姓名不对')
continue
while True:
tel = input('输入电话:')
if len(tel)== 11:
if tel.isdigit():
break
else:
print('电话只能为数字')
continue
else:
print('电话不对')
continue
while True:
gender=input('请输入性别')
if gender=='男' or gender=='女':
break
else:
print('重新输入男女')
fun()
使⽤函数求前20个斐波那契数列斐波那契数列:1,1,2,3,5,8,13,21…即: 起始两项均为1,此后的项分别为前两项之和
def feibo(num):
a,b=1,1
list1=[]
for i in range(num):
if i==0:
list1.append(a)
if i>0:
a,b=b,a+b
list1.append(a)
print(list1)
feibo(20)
编写⼀段代码,定义⼀个函数求1-100之间所有整数的和,并调⽤该函数打印出结果
def fun(a):
r=0
for i in range(1,a+1):
r+=i
print(r)
fun(6)