s ='fjkdsfljsdklfjskdfdsfsdafsd'
count =0for i in s:
count +=1print(count)#
l =[1,2,3,4]
count =0for i in l:
count +=1print(count)# def 关键字 函数名:defmy_len():#函数体
l =[1,2,3,4]
count =0for i in l:
count +=1print(count)#
my_len(s)# 执行函数# 函数的优点:# 减少代码的重复率。# 增强代码的阅读性## 函数到底是什么? 函数最主要的目的:封装一个功能。##
s ='fjkdsfljsdklfjskdfdsfsdafsd'print(len(s))defmy_len():# 函数体
l =[1,2,3,4]
count =0for i in l:
count +=1print(count)print(my_len())## 函数的返回值 return# 1、函数中如果遇到return,则直接结束函数。# 2、给函数的执行者返回值。return# Nonereturn# 单个值 原封不懂的返回return# 多个值 一个元组,所有的返回值作为元组的每一个元素deffunc1():print(111)print(222)returnprint(333)print(func1())# 整体是函数的执行者。##deffunc1():
a =1
b =2
c = a + b
d ='alex'
e =[1,2,3]return c,d,e
ret = func1()print(ret,type(ret))# 整体是函数的执行者。# 函数中尽量不要出现print#defmy_len():# 函数体
s ='fjkdsfljsdklfjskdfdsfsdafsd'
count =0for i in s:
count +=1return count
print(my_len())## 函数的传参:# 实参# 位置参数# 关键字参数# 混合参数# 形参#
l1 =[1,2,3]
s ='fjkdsfljsdklfjskdfdsfsdafsd'defmy_len(argv):# 形式参数,形参
3函数体
count =0for i in argv:
count +=1return count
print(my_len(s))# 函数的执行者(实参) 实际的参数print(my_len(l1))# 函数的执行者(实参) 实际的参数## 实参# 位置参数 按顺序一一对应#deffunc1(x,y):print(x,y)#
func1(1,2)# 2个函数:1个函数 求和;1个函数 将大的数给我返回defmy_sum(a,b):return a+b
print(my_sum(5,7))#defbig_small(x,y):if a > b:return a
else:return b
ret = x if x > y else y
return x if x > y else y
print(big_small(51,7))## 三元运算:只针对于简单的if else 这样的结构,才可以使用## 关键字传参 可以不按照顺序,但是必须一一对应#deffunc1(x,y):return x + y
#
func1(y=100,x=99)#deffunc1(x,y):return x + y
#
func1(y=100,x=99)## 混合传参:关键字参数一定要在位置参数后面#deffunc1(a,b,n,x,y):return x+y
#
name ='alex'print(func1(100,200,name,y=100,x=99))defnamelist(n1,s1='男'):withopen('namelist',encoding='utf-8',mode='a')as f1:
f1.write('{}|{}\n'.format(n1,s1))#while1:
name,sex =input('请输入姓名,性别:以,隔开').strip().replace(',',',').split(',')if name.upper()=='Q':breakif sex.strip():
namelist(name,sex)else:
namelist(name)# 默认参数的陷阱# 默认参数若是可变的数据类型,他始终使用的是一个deffunc1(x,l1=[]):
l1.append(x)return l1
ret = func1(1)print(ret,id(ret))
ret1 = func1(100)print(ret1,id(ret1))print(ret,id(ret))