函数的定义:
def 函数名():
pass
def my_len():
ls = [1,2,3,4,11,18]
for count in ls:
count += 1
print(count)
函数的调用方法:
函数名() # 执行函数 函数名()
函数的优点:
减少代码的重复率;
增强代码的阅读性。
函数到底是什么?函数最主要的目的:封闭一个功能。
函数的返回值: 要用到 return 语句
# 函数的声明: def 函数名(): def my_len(): # 这个函数没有返回值 ls = [1,2,3,4,11,18] for count in ls: count += 1 print(count) my_len() result = my_len() # 函数没有返回值,用一个变量去接收结果,就是:None print(result) # 输出结果: None # 要让函数返回址,就要用到 return 语句, return 值 ;若没有,没有跟值 ,返回值 也是 None # return 后面没有跟值的情况: def demo1(): a = 5 return print(demo1()) # None # return 后面跟一个值 的 情况: def demo2(): a = 5 return a result = demo2() print(result,type(result)) # 5 <class 'int'> def demo3(): tu = (1,3,'abc') return tu result = demo3() print(result,type(result)) # (1, 3, 'abc') <class 'tuple'> # return 后面跟一个值的情况总结:值是什么类型,返回也相应的类型。即原封不动地返回。 # return 后面跟多个值的情况: 值 与 值 之间以‘逗号’分割 def demo4(): x = 5 y = 'hello world' dic = {'name':'chris'} return x,y,dic ret = demo4() # 整体是函数的执行者。在工作中,函数中尽量不要出现print print(ret,type(ret)) # (5, 'hello world', {'name': 'chris'}) <class 'tuple'> # 可见,如果return 返回多个值的情况,将return 后面的值,放进一个元组,整个返回 # 由于返回的是一个元组,可以分别赋值 x,y,dic = demo4() # 分别赋值时, = 号两边的元素个数相同,一一对应 print(x,y,dic) # 5 hello world {'name': 'chris'}
函数的参数:
# 函数的传参: # 实参 # 位置参数: 按照顺序,一一对应 # 关键字参数: 可以不按照顺序,但是必须一一对应 # 混合参数: 关键字参数一定要在位置参数后面 # 形参 # 位置参数:按照顺序,一一对应 # 默认参数: l1 = [1,3,5,7,9,11] s = "jump river haha" def obj_len(argv): # 形式参数,形参 # 函数体 count = 0 for item in argv: count += 1 return count length = obj_len(l1) # 函数的执行者(实参) 实际的参数 print(length) # 6 length = obj_len(s) # 函数的执行者(实参) 实际的参数 print(length) # 15 #实参 之 位置参数: def func1(x,y): print(x,y) func1(1,2) # 通过位置传参数,一一对应, 1 传给形参 x , 2 传给形参 y. # 2个函数,1个函数 求和;2个函数 将大的数给我返回 def sum1(x,y): return x + y a = 10 b = 15 print(sum1(a,b)) def compare(x,y): return x if x > y else y # 三目运算符 x = 3 y = 2001 print(compare(x,y)) # 三元运算符:只针对简单的if else 这样的结构,才可以使用。 # 关键字参数,可以不按照顺序,但是必须一一对应。 def func2(x,y): return x == y # return后面,可以是关系表达式,但不能是赋值表达式 print(func2(y=10,x=7)) # 混合传参: 关键字参数一定要在位置参数后面。 # def func3(a,y,n,x,n): # 在函数的定义中,不能有相同的参数 SyntaxError: duplicate argument 'n' in function definition # return a,y,x,n # name = 'chris' # print(func3(100,200,'chris',x=18,n=28)) # def func3(a,y,n,x,n1): # return a,y,x,n # name = 'chris' # print(func3(100,200,'chris',x=18,n1=28)) # 形参角度 # 位置参数:按照顺序,一一对应 # 默认参数: 给其传值,将原来默认值给覆盖掉,不传值,不报错,使用默认值 # 应用场景:不经常改变的参数,但是一直在用。 def func4(x,y,z=100): return x, y, z print(func4(10,20)) # (10,20,100) print(func4(10,20,150)) # (10,20,150)
def test(x,z,y=100): # 函数定义时,默认参数放在最后
return x + y + z
#print(test(100,2)) # SyntaxError: non-default argument follows default argument 非默认参数不能跟随默认参数后
print(test(x=100,z=100))
print(test(100,200))