一、函数
没有函数的时候的问题:
1.同样的代码要写多次
2.一旦功能要修改,需要修改的地方太多
一、函数
1.什么是函数
函数就是对实现某一特定功能的代码段的封装
2.函数的分类
系统函数:系统已经定义好的函数,程序员直接调用
print(),input(),id().......
自定义函数:需要程序员自己去定义的函数
3.函数的定义
a.语法:
def 函数名(参数列表):
函数体
b.说明
def -Python中声明函数的关键字
函数名 -标识符,不能是关键字;
pep8命名规范,见名知意
() -固定格式
参数列表 -参数1,参数2,参数3....;这儿叫形参
定义的时候形参就是变量
功能是将函数外面的数据传递到函数里面
:-固定格式
函数体 - 一个完整的函数体应当有:函数说明文档、实现函数功能的代码段、函数返回值
b.初学者声明函数的步骤:
第一步:确定函数的功能
第二步:根据功能命名
第三步:确定形参(确定需不需要参数,确定需要几个参数)
看实现函数的功能需不需要从函数外面传值进来?需要传几个?
第四步:实现函数的功能
第五步:确定函数返回值
注意:函数在声明的时候是不会执行函数体的,只有在调用的时候才会执行
4.函数的调用 -使用机器
a.语法:函数名(实参列表)
b.说明:
函数名 -这个函数对应的函数必须是已经声明过的函数
() -固定写法
实参列表 -实参是用来给形参赋值的(用实参给形参赋值的过程叫传参)
实参和形参要一一对应
**c.函数的调用过程(重点!!!)
第一步:回到函数声明的位置
第二步:用实参给形参赋值(传参)
第三步:执行函数体
第四步:执行完函数体就确定并返回返回值
第五步:再回到函数调用的位置,接着执行后面的其他代码
**
写一个函数,求两个数的和
def sum1(a,b):
'''
求两个函数的和(函数功能说明)
:param a: 求和第一个数
:param b: 求和第二个数
:return: 和
'''
return a+b
声明一个函数,打印指定列表中指定元素对应的下标:
def w_list(list,i):
n=0
count=0
while n<len(list):
if list[n]==i:
print(n)
count+=1
n+=1
if count == 0:
print('没有找到该记录!')
w_list([1,2,3,4,5,5,6,7],'qw')
声明一个函数,打印指定的n!
def jiecheng(num):
'''
求一个数的阶乘
:param 要求的数的阶乘:
:return: 返回阶乘
'''
sum=1
i=1
while i<=num:
sum*=i
i+=1
return sum
print(jiecheng(5))
随机产生一个0-100的数字,用户不断输入数字,直到输入的和产生的数字一样,错了提示‘大了、小了’这样提示
import random
def numgame():
num1=random.randint(1,100)
count=0
while True:
num2=int(input('请输入一个数字:'))
if num1>num2:
print('小了')
count+=1
continue
elif num1<num2:
print('大了')
count+=1
continue
else:
print('恭喜您,回答正确!')
break
if count<10:
print('天才')
else:
print('SB')
numgame()
二、函数参数
1.位置参数和关键字参数(根据实参的传递方式对参数进行的分类)
a.位置参数:实参的位置和形参保持一致,按形参的声明的先后顺序赋值一一赋值
b.关键字参数:调用函数的时候以形参=实参的方式来传参,这个时候实参的顺序无所谓
def function1(a,b,c):
print(a,b,c)
function1(10,2,3)#通过位置参数传参
function1(c=1,b=2,a=34) #通过关键字传参
function1(10,20,c=23)#通过设置参数和关键字参数结合传参(注意:关键字参数必须在位置参数后面)
2.参数默认值
声明函数的时候,可以给参数赋默认值。如果一个形参有默认值,那么调用函数的时候可以不用传参
注意:如果有的形参有默认值,有的形参没有默认值,那么有默认值得形参要放到没有默认形参后面
调用函数要保证每个参数都有值!
def func2(a,b,c=1):
print(a,b,c)
func2(3,4)#参数c有默认值,调用函数的时候c可以不用传参
3.参数的类型说明 -类型说明只有提示功能,没有约束功能
a.给参数设置默认值,默认值得类型就是参数的类型
b.在形参后面加 :类型名,来说明参数类型。这种方式调用的时候必须传参
如果一个参数给了默认值,就不能再这样加说明
c.函数声明的时候在()后面加 ->类型名,来说明函数返回值的类型
类型说明的好处:a.对实参的类型进行指导 b.实现函数功能的时候有类型相关的语法提示
4.不定长参数 --函数的参数个数不确定(不定长参数必须放在最后)
a.在声明函数的时候,在参数名前加,可以用来同事获取多个实参的值
实质是将的参数编成元组,将多个实参的值作为元组的个数
b.在参数名前加两个,必须使用关键字参数,且将关键字作为key,参数值作为value存为一个字典
注意:两个必须放在一个的后面*
写一个函数,计算多个数的和,要求可以使用位置参数和关键字参数
def wg_sum(*num1,**num2):
sum1=0
sum2=0
for i in num1:
sum1+=i
for n in num2:
sum2 +=num2[n]
return sum1+sum2
print(wg_sum(1,2,34,999,a=12))
三.函数返回值
a.就是函数体中调用表达式的值,就是return关键字后面表达式的值,将函数里面的数据传递到函数外面
函数调用表达式 ---调用函数的语句
b.Python中每个函数都有返回值,默认是None
return -关键字,只能卸载函数体中。功能:1.确定函数的返回值 2.结束函数
执行函数的时候如果遇到return,函数直接结束,并且将return后面的值作为函数的返回值、
函数执行过程:
返回函数声明位置
传参
执行函数体
执行完函数确定返回值 -如果执行过程中没有遇到return 返回值就是None
--如果执行过程中遇到了return,return后面是什么返回值就是什么
回到函数调用的位置 (这个时候函数调用的表达式的值就是函数的返回值)
2.多个返回值
return 值1,值2,值3...--->return(值1,值2,值3)
3.怎么确定函数是否需要返回值
实现函数的功能如果会产生新的数据,就将这个数据用return返回
def func3():
return 1,2,3
print(func3())
网友评论