目录
五,函数的返回值:return 的作用停止函数体的运行。和break的功能一样。并且返回给这个函数一个值。
一,函数的定义
函数最只要的目的:封装一个功能。
Function objects are created by function definitions. The only operation on a function object is to call it: func(argument-list)
.
There are really two flavors of function objects: built-in functions and user-defined functions. Both support the same operation (to call the function), but the implementation is different, hence the different object types.
二,函数的优点是什么
1,减少代码重复率。
2,增强代码可阅读性。 # 不可能看一百行才知道你这个东西到底是干什么大的吧。
三,函数的组成部分
def my_len(): # 关键字,函数名,括号,冒号
l = [1, 2, 3, 4] # 函数体
count = 0
for i in l:
count += 1
print(count)
四,执行函数
my len() # 函数名 + 括号
五,函数的返回值:return 的作用停止函数体的运行。和break的功能一样。并且返回给这个函数一个值。
1> return 空或者没有return时,打印函数执行者时,为None
def func1():
print (888)
return
def func2():
print(9)
print(func1())
print(func2())
>>>
888
None
9
None
2,return 加一个值,返回给函数这个值,这个值是什么类型就返回什么类型
3,return 加多个值是,返回给函数一个由这些值组成的元组,如
def func1():
a = 8
return a
def func2():
a = 9
b = 20
return a, b
print(func1())
print(func2())
8
(9, 20)
六,函数的传参,函数的参数分为形参和实参,
顾名思义,一个形式上的参数,一个实实在在的参数。
1. 形参的角度分类:
1> 位置参数, 按照顺序 ,一 一对应。就是这个位置我占了,谁在我位置上,我就是谁。先来后到。
执行结果如下:
2> 默认参数,如果你给我一个值,我会将原来默认的参数覆盖掉。如果你不给我传值,就是设置好的默认参数
3> 万能参数,也叫动态参数,*args ,**kwargs
4> 形参的顺序 :位置参数,*args,默认参数,**kwargs。
1. 位置参数是最大的,一定要摆在第一位,实参中的也一样,如果摆在后面肯定报错,要么少了,要么多了
2.*args实际上也是位置参数,就是实参中在形参中的*args的位置有多少个参数,那就吃多少个参数。
3.如果把默认参数摆在他两前,都被*args给吸走了。
4.**kwargs一定是在最后的。实质上是一个默认参数
5,传参陷阱:如果默认参数是一个可变的数据类型,那么他的内存地址用的是一个。
例1(传默认参数时的运行结果):
运行结果如下
例2(把变量放入局部命名空间):
运行结果如下:
2.站在实参的角度分为:位置传参,关键字传参,混合传参。
例
运行结果如下