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、作用域

全局名称空间和局部名称空间中可能会存在名字相同的变量。
但是这个是互不影响的。

 

posted @ 2020-05-31 15:09  我和姚明一样高  阅读(240)  评论(0编辑  收藏  举报