python之函数初始
案例一
s='dhclvamvmzkfisncnmlwq' count=0 for i in s: count+=1 print(count) #21
案例二
l=[1,2,3,4] count=0 for i in l: count+=1 print(count) #4
函数的使用必须遵循一个原则:先定义后调用
1. def 关键字 函数名:
def 函数名():
函数体
def my_len(): #函数体 l=[1,2,3,4] count=0 for i in l: count+=1 print(count) #4 my_len() #执行函数 ,函数名()
函数体:就是函数被执行之后要执行的代码
函数的优点:(1)减少代码的重复率。
(2)增强代码的阅读性
2.函数的到底是什么
函数:对代码块和功能的封装和定义
s='asdfghjklmnbvcxz' print(len(s)) #16
def my_len(): #函数体 s = 'dhclvamvmzkfisncnmlwq' count=0 for i in s: count+=1 print(count) my_len()#21
函数的调用过程:
3.函数的返回值 return
1).函数中如果遇到return,则直接结束函数
2).给函数的执行者返回值。
return None
def func1(): print(111) print(222) return print(333) func1() #111 222 func1()整体是函数的执行者
3)return 单个值 原封不动的返回
def func1(): a=1 b=2 c=a+b d='alex' e=[1,2,3] return e ret=func1() print(ret,type(ret)) #[1, 2, 3] <class 'list'>
4)return 多个值 返回一个元组,所有的返回值作为元组的每一个元素
def func1(): a=1 b=2 c=a+b d='alex' e=[1,2,3] return c,d,e ret=func1() print(ret,type(ret)) #(3, 'alex', [1, 2, 3]) <class 'tuple'>
工作中,函数中尽量不要出现print
def my_len(): #函数体 s='asncmxzloeruty' count=0 for i in s: count+=1 return count print(my_len()) #14
总结一下:
1.遇到return,函数结束,return下面的(函数内)的代码不会执行。
2.return 会给函数的执行者返回值。
如果return后面什么都不写,或者函数中没有return,则返回的结果是None
如果return后面写了一个值,返回给调用者这个值
如果return后面写了多个结果,,返回给调用者一个tuple(元组),调用者可以直接使用元组的解构获取多个变量。
4.函数的参数
参数,函数在调用的时候指定具体的一个变量的值.就是参数.语法:
def 函数名(参数列表):
函数体
1.形参
写在函数声明的位置的变量叫形参,形式上的一个完整.表示这个函数需要xxx
2.实参
在函数调用的时候给函数传递的值.加实参,实际执行的时候给函数传递的信息.表示给函数xxx
3.传参
函数的传参就是函数将实际参数交给形式参数的过程.
(1)实参
l1=[1,2,3] s='asncmxzloeruty' def my_len(argv): #argv形式参数 #函数体 count=0 for i in argv: count+=1 return count print(my_len(l1)) #3 my_len(l1)函数的执行者(实参),实际的参数
1)位置参数,必须要按顺序一一对应
def fun1(x,y): print(x,y) fun1(1,2) #1 2
习题:2个函数:一个函数求和;另一个函数将大的数给我返回
a.函数的求和
def sum1(x,y): return x+y a=3 b=6 print(sum1(a,b)) #9
b.将大的返回
def compare(x,y): if x>y: return x else: return y print(compare(100,101)) #101
c.三元运算:只针对于简单的if else这样的结构,才可以使用
def compare(x,y): # if x>y: # return x # else: # return y # ret=x if x>y else y # return ret return x if x>y else y print(compare(100,101))
2)关键字传参,可以不按照顺序,但是必须一一对应
def fun1(x,y): return x+y print(fun1(y=100,x=99)) #199
3)混合传参:关键字参数一定要在位置参数后面
def fun1(a,b,n,x,y): return x+y name='alex' print(fun1(100,200,name,y=100,x=99)) #199
(2)形参角度:
1).位置参数,位置参数其实与实参角度的位置参数是一样的,就是按照位置从左至右,一一对应
2).关键字参数,一一对应
def date(sex, age, hobby): print("拿出手机") print("打开陌陌") print('设置筛选条件:性别: %s,年龄:%s,爱好:%s' %(sex, age, hobby)) print("找个漂亮的妹子") print("问她,约不约啊!") print("ok 走起") date('女','25~30','唱歌')
习题:
写一个函数,检查传入列表的长度,如果大于2,那么仅保留前两个长度的内容,并将新内容返回给调用者
def func(arg): if len(arg) > 2: return arg[0], arg[1] print(func([1, 2, 3, 4])) print(func([1, 2]))
3)默认值参数
默认参数设置的意义:普遍经常使用的
def stu_info(name, age, sex='男'):
print("录入员工信息")
print(name, age, sex)
print("录入完毕")
stu_info("张飞", 22)