Python(函数初识)
一、初识函数
- 面向过程缺点 : 代码重复,代码描述性不高
- 函数 : 函数是以功能为导向,一个函数封装一个功能.
- 函数的优点 : 减少代码重复性,增强了代码的可读性
二、函数的结构
# 结构
def 函数名():
内容
# def : 定义一个函数,def关键字后紧跟一个空格
# def 函数名() : 函数名命名方式与变量命名规范一致
三、函数的调用
# 结构
def 函数名():
内容
函数名()
# 函数名() : 函数的执行
---------------------------------
# 函数的执行写多少次,执行多少次
lis=[1,2,3,4,5,6,7,8,9]
def new_len():
count=0
for i in lis:
count+=1
print(count)
for i in range(3):
new_len() # 执行结果 三次9
四、函数的返回值
return 作用1 : 只能在函数中用,可用于结束函数
lis=[1,2,3,4,5,6,7,8,9]
def new_len():
count=0
for i in lis:
count+=1
print("少林")
return
print("武当")
new_len() # 少林
return 作用2 : 给函数的执行者返回具体的值(三种情况)
-
函数中没有return或只写一个return,函数的执行者得到的是None
lis=[1,2,3,4,5,6,7,8,9] def new_len(): count=0 for i in lis: count+=1 return print(new_len()) # None
-
函数中return后跟单个值,则返回这个值,不改变值得类型
lis=[1,2,3,4,5,6,7,8,9] def new_len(): count=0 for i in lis: count+=1 return [1,2,3,4,5] print(type(new_len())) # <class 'list'>
-
函数中return后跟多个值,函数的执行者得到的是一个元组
lis=[1,2,3,4,5,6,7,8,9] def new_len(): count=0 for i in lis: count+=1 return [1,2,3,4,5],123,"123" print(type(new_len())) # <class 'tuple'>
五、函数的传参
定义 : 在函数调用时,那实参的值赋值给形参的过程叫做传参.
目的 : 函数可扩展性
def new_len(a): # 定义函数时的参数:形参
count=0
for i in a:
count+=1
return count
l1=[1,2,3]
s1="dsadsadsadsad"
print(new_len(l1)) # 3 函数的调用者参数:实参
print(new_len(s1)) # 13 函数的调用者参数:实参
实参分类(三种)
-
位置参数 : 按照位置为形参赋值,按照顺序一一对应
def meet(sex,age,job):# 位置参数从左到右,形参与实参按照顺序一一对应 print("寻找性别%s,年龄%s岁,工作%s"%(sex,age,job)) meet("女","20-25","老师")
-
关键字参数 : 按照位置为形参赋值,可不按照顺序一一对应
# 位置参数从左到右,形参与实参可不按照顺序一一对应 def meet(sex,job,age): print("寻找性别%s,年龄%s岁,工作%s"%(sex,age,job)) # 这里要按照顺序 meet(job="老师",age="20-25",sex="女")
-
混合参数
# 关键字参数一定要在位置参数后面,一一对应 def meet(job,age,weight,sex): print("寻找性别%s,年龄%s岁,工作%s,体重%s"%(sex,age,job,weight)) # 这里要按照顺序 meet("老师","20-25",sex="女",weight="120")
形参角度(四种)
-
位置参数 : 与实参角度位置参数一致
-
默认参数 : 默认参数一定在位置参数后面,不传参数即沿用默认的参数,更改默认参数可以用位置或指定的方式更改默认参数.
def meet(job,age,weight,sex="女"): print("寻找性别%s,年龄%s岁,工作%s,体重%s"%(sex,age,job,weight)) # 这里要按照顺序 meet("老师","20-25",weight="120") --------------------------------- # 更改默认参数,第一种 def meet(job,age,weight,sex="女"): print("寻找性别%s,年龄%s岁,工作%s,体重%s"%(sex,age,job,weight)) # 这里要按照顺序 meet("老师","20-25",sex="女",weight="120") # 更改默认参数,第二种 def meet(job,age,weight,sex="女"): print("寻找性别%s,年龄%s岁,工作%s,体重%s"%(sex,age,job,weight)) # 这里要按照顺序 meet("老师","20-25","120","男")
以下两种函数进阶会讲到
-
动态参数
-
仅限关键字参数