python 吐血总结 【函数基础】
函数
一、定义函数
运行代码的时候,不会真正去执行代码,而是一个流程。
二、函数定义的三种方式
1、有参函数 def f1(*args, **kwargs): 2、无参函数 def f2() 3、空函数
三、调用函数
def f1(): return 123456789 f = f1() print(f)
四、函数的返回值
Return是返回返回值,函数遇到return会终止,return可以返回任意数据类型的值,同时也可以返回多个数值,也可以return里面进行数值运算和数据操作。
如果没有return,那么默认返回的数值为None。
五、函数的参数
形参
定义函数名和函数体的时候使用的参数,目的是用来接收调用该函数时传入的参数。 # 这里函数里面的name就是一个形参 def username(name): return name username('jackson')
实参
1、位置实参 2、关键字实参 3、默认参数
注意:
1、如果实参不对该形参传值,那么使用默认值,一个形参只能接收一个值,如果重复那么报错
2、关键字实参必须得在位置实参后面,默认形参也必须在位置形参后面。
六、可变长参数
*args
接收多余的位置实参,以元组的方式存储(1,1,2,3,3,4,5)
*kwargs
接收多余的关键字实参,以字典的方式存储{‘x’:2,'y':5,'a':8}
例子
def f1(*args,**kwargs): pass # f1可以接收所有的参数 f1(1,1,2,3,3,4,5,x=2,y=5,a=8)
七、函数对象
def fun() pass
1、引用 f = fun
2、作为函数返回值 return fun (装饰器里面的回调)
3、作为函数参数传入f2(fun)
4、容器元素 dict = {'x': fun}
八、函数的嵌套
def f1(): def f2(): pass f2() # 报错
# 看看这里两个函数是不是嵌套在一起了,f2嵌入在f1里面。(也是装饰器的一个特点之一)
九、名称空间与作用域
1、内置名称空间:存放内置的名字
len、max、min、map、filter、
2、全局名称空间:除了内置与局部之外,其他名字度存放在全局空间内
3、局部名称空间:函数内部定义的名字或者属性都是局部名称空间,不同函数或类内部的名字互不干涉
1、查找顺序:如果当前是局部名称空间,查找顺序为:局部、全局、内置
2、执行顺序:先内置(python解释器启动的时候才会生成)——》全局(文件执行的时候才会生成)——》局部(函数调用的时候才会生成)
4、作用域
全局名称空间和局部名称空间中可能会存在名字相同的变量。
但是这个是互不影响的。