概述
函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。
函数能提高应用的模块性,和代码的重复利用率。你已经知道Python提供了许多内建函数,比如print()。但你也可以自己创建函数,这被叫做用户自定义函数。
定义一个函数
你可以定义一个由自己想要功能的函数,以下是简单的规则:
- 函数代码块以 def 关键词开头,后接函数标识符名称和圆括号 ()。
- 任何传入参数和自变量必须放在圆括号中间,圆括号之间可以用于定义参数。
- 函数的第一行语句可以选择性地使用文档字符串—用于存放函数说明。
- 函数内容以冒号 : 起始,并且缩进。
- return [表达式] 结束函数,选择性地返回一个值给调用方,不带表达式的 return 相当于返回 None。
语法
Python 定义函数使用 def 关键字,一般格式如下:
默认情况下,参数值和参数名称是按函数声明中定义的顺序匹配起来的。
def 函数名(参数列表): 函数体调用:函数名(参数)
1.函数名明明规范:
小写字母,不能以数字开头,不同的字母制安用下划线隔开
def 函数名():
函数体 # 你希望这个函数去给你实现什么功能
调用:函数名()
练习:输出“我是测试”
def ce_shi():
print('我是测试')
ce_shi()
2.形式参数/位置参数
(1)函数名中的参数为形参/位置参数时,调用函数名中的参数是实参
def 函数名(形参/位置参数): # 函数名中存在形参
函数体 # 可以调用形参或者赋值,如果赋值则以赋值为准
调用:函数名(实参) #当函数名字的参数为形参时,调用函数时实参必传,且以实参为准
练习1:输出‘huahua是测试’,且函数体调用形参,以实参为准
def ce_shi(name): # 此时name是形参.调用函数时必须要有参数,可用可不用
print('{0}是测试'.format(name)) # 调用形参name
ce_shi('huahua') # 'huahua'是实参,当函数名字的参数为形参时,调用函数时实参必传
练习2:输出‘XXX是测试’,且函数体不调用形参,自己赋值,此时以函数体自己赋值为准
def ce_shi(name): # 此时name是形参.调用函数时必须要有参数,可用可不用
print('{0}是测试'.format('暖暖')) # 可调用形参name,也可自己赋值不调用形参
ce_shi('huahua') # 'huahua'是实参,当函数名字的参数为形参时,调用函数时实参必传
3.默认参数
def 函数名(默认参数名='默认参数值'): # 函数名中存在默认值
函数体 # 可调用默认参数,也可自己赋值,如果赋值则以赋值为准
调用:函数名(实参) #当函数名为默认参数时,调用函数时以实参为准
练习1:函数名中存在默认值 且实参也传参时,以实参为准
def ce_shi(name='幺幺'): # 函数名存在默认值
print('{0}是测试'.format(name))
ce_shi('huahua') # 'huahua'是实参,当函数名为默认参数时,调用函数时以实参为准
练习2:函数名中存在默认值 且实参未传参时,以默认参数为准
def ce_shi(name='幺幺'): # 函数名存在默认值
print('{0}是测试'.format(name))
ce_shi() # 当函数名为默认参数时,实参可不传值
练习3:函数名中存在默认值 且实参未传参的同时函数体自己赋值时,以以函数体赋值为准
def ce_shi(name='幺幺'): # 函数名存在默认值
print('{0}是测试'.format('暖暖')) # 可调用默认参数,也可自己赋值,如果赋值则以赋值为准
ce_shi() # 当函数名为默认参数时,实参可不传值
4.位置参数与默认参数同时使用
位置参数:没有指定参数时,调用函数时按顺序赋值;
def add(m, n, k): # 形参
sum = 0
for a in range(m, n, k): # 调用参数
sum += a
print(sum)
add(1, 5, 2) # 实参,# 没有指定参数时,按顺序赋值
有指定参数值时,调用函数时不是按顺序赋值,需要与def add(m, n, k): 中的参数一致
def add(m, n, k): # 形参
sum = 0
for a in range(m, n, k): # 调用参数
sum += a
print(sum)
add(n=5, m=1, k=2) # 实参,# 指定参数值时,不是按顺序赋值,需要与def add(m, n, k): 中的参数一致
5.编写函数三部走
练习题:请把1-100的练习整数相加功能,写成一个函数:
第一步:先用代码实现功能,还可以选取一组数据来证明自己的diamante是否镇正确
sum = 0
for a in range(1, 101):
sum += a
print(sum)
第二步:变成函数,加def 且调用
def add():
sum = 0
for a in range(1, 101):
sum += a
print(sum)
#方便测试
if __name__ == '__main__': #主程序的执行入口,只有当前模块下面执行的时候才会执行
print('主程序的执行入口')
add()
第三步:想办法提高代码的复用性
6.return
return不能脱离函数
1.当调用函数时,会返回一个值 即return后面的表达式
(1)正常的打印输出到控制台
def add(a, b):
print(a + b) # 目前只学习了print输出到控制台
add(1, 3)
(2)使用返回值
def add(a, b):
print(a + b)
add(1, 3) + 10
(2-1)输出报错:
TypeError: unsupported operand type(s) for +: 'NoneType' and 'int' ——> 类型错误:不支持+:“NoneType”和“int”的操作数类型
(2-2)报错原因:
add(1, 3) 已经被print(a + b)输出到控制台,返回值是“NoneType”
(2-3)如何解决上述问题:
此时可以用返回值
def add(a, b):
return(a + b) # 返a+b的值
print(add(1, 3) + 10) #输出返回值+10
(3)可以使用存储值
def add(a, b):
return(a + b) # 返a+b的值
res = add(1, 3) + 10 # 存储add(1, 3) + 10的值
print(res) # 输出存储值
2.return在函数里面相当于一个结束符,表示函数到此为止,后面的代码不会被执行
(1)return在函数里面相当于一个结束符,表示函数到此为止,函数里面的代码会被执行:
def add(a, b):
print('函数里面的代码是否会被执行') #函数里面且return前面的代码被执行
return(a + b) # 返a+b的值
res = add(1, 3) + 10 # 存储add(1, 3) + 10的值
print(res) # 输出存储值
(2)return在函数里面相当于一个结束符,表示函数到此为止,后面的代码不会被执行
def add(a, b):
return(a + b) # 返a+b的值
print('函数里面的代码是否会被执行') #函数里面且return后面的代码不被执行
res = add(1, 3) + 10 # 存储
add(1, 3) + 10的值 print(res) # 输出存储值
(3)return在函数里面相当于一个结束符,表示函数到此为止,后面的代码不会被执行,函数外面的代码被执行
def add(a, b):
return(a + b) # 返a+b的值
print('函数里面的代码是否会被执行') #函数外面的代码被执行
res = add(1, 3) + 10 # 存储add(1, 3) + 10的值
print(res) # 输出存储值
(4)练习:写函数,检查传入的列表的长度,如果大于2,那么仅仅保留前两位长度的内容,并将新内容返回
B = [12, 2, 2, 2] # 给出一个列表
def check_list(L):
if len(L) > 2: # 判断列表长度是否大于2
n_list = L[0:2] # 如果列表长度大于2,取列表前两位并赋值给新的变量
return n_list # 返回新列表
else: # 如果列表长度小于等于2,直接返回原列表
return(L)
n_list = check_list(B) # 存储新列表 ,B为实参,L为形参
print(n_list) # 输出结果
7.不定长参数/动态参数
*agrs 为arguments的简写,*不能改变,但是args可以使用其他内容代替
1.不限制参数的个数和长度
2.在函数组织内部以元组的形式表示
def make_sandwich(*args):
# print(args) # 函数内部表现形式元组('生菜', '鸡蛋')
all = '' # 定义一个空值
for item in args: # 遍历动态参数,赋值给item
all += item # 给all赋值item
all += '、' # 给all赋值、
print('您的三明治里面有:'+all) # 使用拼接将字符串和值输出
make_sandwich('生菜', '鸡蛋') # 实参
8.关键字参数
key -value形式,关键字**kwargs kw -> key word,注意必须加**,kwargs可以换成其他 在函数里面以字典的形式展示
def kw_function(**kwargs):
print(kwargs) # 输出内容字典的形式展示
kw_function(x=1, y=2) #key - value
练习:
1.不定长参数练习
def add(*L): #函数名为动态/不定长参数
sum = 0
for item in L: # 遍历参数赋值给item
sum += item
print(sum)
add(1, 2, 3, 4, 5) # 实参为位置参数,默认/指定参数要放在位置参数的后面
2.不定长参数和位置参数一起使用
def add(*l, a): # 按顺序赋值,参数a为1
# 当不定长参数后面存在位置参数,实参为位置参数时运行报错:TypeError: add() missing 1 required keyword-only argument: 'a'
# 报错原因:不定长参数不限制参数个数和长度,可以包含所有参数,此时位置参数a没有值
# 解决方法:
# (1)将位置参数a放置在不定长参数前面
# (2)在实参中给a赋值
sum = 0
for item in l: # 遍历参数赋值给item
sum += item
print(a)
print(sum)
add(1, 2, 3, 4, 5) # 实参为位置参数,默认/指定参数要放在位置参数的后面
# (1)将位置参数a放置在不定长参数前面
def add(a, *l): # 按顺序赋值,参数a为1
sum = 0
for item in l: # 遍历参数赋值给item
sum += item
print(a)
print(sum)
add(1, 2, 3, 4, 5) # 实参为位置参数,默认/指定参数要放在位置参数的后面
# (2)在实参中给a赋值
def add(*l, a): # 按顺序赋值,参数a为1
sum = 0
for item in l: # 遍历参数赋值给item
sum += item
print(a)
print(sum)
add(1, 2, 3, 4, 5, a=6) # 实参为位置参数,默认/指定参数要放在位置参数的后面
3.不定长参数、关键字参数和默认参数一起使用
def add(*l, a, **kwargs):
sum = 0
for item in l: # 遍历参数赋值给item
sum += item
print(a)
print(sum)
print(kwargs)
add(1, 2, 3, 4, 5, a=1, x=6,y=8) # 实参为位置参数,默认/指定参数要放在位置参数的后面
最后
以上就是风趣奇迹为你收集整理的014python-内置函数的全部内容,希望文章能够帮你解决014python-内置函数所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复