1、函数:
定义:对代码块和功能的封装和定义
函数的语法:
def 函数名(形参):
函数体
函数名(实参)
函数的命名规则:同变量的命名规则一样
2、函数返回值:return
当函数执行到函数返回值时,就标志着函数已经停止,在return后的任何逻辑都不会执行
如果函数中不写return时,默认返回的值为None
如果函数中只填写了return时,同样返回的值为None
return+返回值,则返回结果为“返回值”
如果一次性返回多个值。如:return 返回值1,返回值2,返回值3,则返回结果是一个元组
3、参数
形参:在函数执行的时候给函数传递的信息
位置参数:
默认参数:当调用的时候不给传值使用默认值
混合参数:顺序: 1. 位置参数, 2, 默认值参数(位置参数在前,默认参数在后)
实参:
位置参数:按照位置给形参赋值
关键字参数:按照名称给形参赋值
混合参数:先用位置参数, 再用关键字参数
动态参数:
位置动态参数:*args
# 写函数. 给函数传递任意个整数. 返回这些数的和
def he(*n):
sum = 0
for e in n:
sum += e
return sum
print(he(5))
print(he(15))
或
def he(*n): return sum(n) (sum是python的内置求和函数) print(he(5))
关键字动态参数:**kwargs
def func(**food): # **food动态接收关键字参数
print(food) # 接收到的是字典
func(good_food="盖浇饭", bad_food="辣条", drink="冰封")
参数的顺序:位置参数、位置动态参数、默认参数、关键字动态参数
在形参上*聚合, **聚合
在实参上*打散, **打散
课堂例子:
计算1到任意数的和
def sum(n):
s = 0
count = 1
while count <= n:
s = s + count
count = count + 1
return s
ret = sum(456)
print(ret)
判段数字的奇偶性
def fn(n):
if n%2 == 0:
return "偶数"
return "奇数"
print(fn(456))
作业:
1、写函数检查传入的元组或者列表的奇数索引对应的值形成一个新的列表返回给调用者
def lstup(lstup):
list=[]
for i in range(len(lstup)):
if i%2!=0:
list.append(lstup[i])
return list
print(lstup([1,4,6,7,9,4]))
print(lstup((1,4,6,7,9,4,8)))
2、写函数判断用户传入的对象(字符串、列表、元组)长度是否大于5
def func(lst):
if len(lst)>5:
return "该对象长度大于5"
else:
return "该对象长度不大于5"
print(func("liuys"))
print(func("yunson"))
在以后职场编写代码时最好返回True和False的值
def func(lst):
if len(lst)>5:
return True
else:
return False
print(func("liuys"))
print(func("yunson"))
最简便的方法
def func(lst):
return len(lst)>5
print(func("liuys"))
print(func("yunson"))
3、当用户传入列表长度大于2时,我们就返回列表的前两项给调用者
def func(list):
if len(list)>2:
return list[0],list[1]
print(func([1,3,5,6]))
4、写函数判断,传入参数的字符串中,数字、字母、空格以及其他内容的个数,并返回结果
def fun(a=""):
num=0
ab=0
kong=0
other=0
for i in a:
if i.isdigit():
num+=1
elif i.isalpha():
ab+=1
elif i==" ":
kong+=1
else:
other+=1
return num,ab,kong,other
print(fun("yunson_liu 122"))
5、编写函数,同时传入两个值,返回大的值
def func(a,b):
if a>b:
return a
else:
return b
print(func(3,5))
利用三元表达式,三元运算符解决此问题(如果a大于b,则取值为左边的a,否则取值为右边的b)
def func(a,b):
c=a if a>b else b
return c
print(func(3,5))
6、写函数,检查传入字典的value值长度,如果值的长度大于2,我们就保留value 的前两个的长度,并返回给调用者
def fun(dic):
new_dic={}
for k,v in dic.items():
if len(v)>2:
new_dic[k]=v[0:2]
else:
new_dic[k]=v
return new_dic
dic={"k1":"v1v1","k2":[11,22,33,44]}
print(fun(dic))
7、写函数,传入必须是列表的数据类型,传入参数后,将列表转换为新的字典,其中字典的键值对为列表索引和对应的值
def fun(list):
dic={}
for i in range(len(list)):
dic[i]=list[i]
return dic
list=[1,4,7,9,10]
print(fun(list))
8、写函数,传入姓名、性别、年龄、学历的四个值,并将四个值写入到文件student.msg中
def fun(name,age,edu,sex="男"):
f=open("student.msg",mode="a",encoding="utf-8")
f.write(name+"\t"+sex+"\t"+age+"\t"+edu+"\n")
f.flush()
f.close()
9、写函数,只需要传入文件名和需要更改的文件内容,既可以执行函数对文件进行修改
import os
def fun(file,old,new):
with open(file,mode="r",encoding="utf-8") as f1,\
open("new_"+file,mode="w",encoding="utf-8") as f2:
for s in f1:
ss=s.replace(old,new)
f2.write(ss)
os.remove(file)
os.rename("new_"+file,file)