python函数知识总结

函数知识点总结

  • 1.什么是函数

    函数就是具备某一特定功能的工具

  • 2.函数的作用以及如何使用

    函数可以减少重复代码、增强程序的扩展性、可读性;使用原则是先定义后调用,在定义阶段只检测语法不执行函数体代码,调用阶段才执行函数体代码。

语法:

def foo(参数1, 参数2):

    ''' 文档注释 '''

    code1

    code2

    return 返回值

扫描二维码关注公众号,回复: 1631256 查看本文章
  • 参数:形参与实参

形参:位置形参,默认形参,可变长参数

def foo(x, y): #位置形参

    pass

def foo(x, y = 1):   #默认形参y

    pass

def foo(x, *args, **kwargs): # 可变长参数*args,**kwargs

    pass

实参:位置实参,关键字实参,可变长实参(*后面必须跟可迭代对象, **后面必须是字典)

调用阶段:

foo(1, 2)

foo(x = 1, y =2)

foo(*"hello", **{'x': 1, 'y': 2})

  • 函数的返回值:

    return是函数结束的标志,函数内可以有多个return,但只要执行一次函数就会立刻结束,并把return的值作为本次调用结果返回。返回值可以是任意类型,没有个数限制,没有return默认返会None,若返回多个值,会将多个值放在一个元组里一起返回。

def foo(x, y):

    return x + y

  • 函数对象:函数对象可以被当做数据去处理

1、引用

def foo():

    pass

f = foo

2、当做参数

print(foo)

3、当做返回值

def bar()

    def wrapper()

        pass

     return wrapper

f = bar()

4、当做容器类型的元素

def f1():

    pass

def f2():

    pass

l = [f1, f2,]

l[0]()  #函数名加括号即调用该函数

  • 函数嵌套:

函数嵌套调用

def foo():

    bar()

    f1()

    f2()

foo()

函数嵌套定义

def f1():

    def f2():

        pass

    f2()

  • 名称空间与作用域

名称空间:内置名称空间、全局名称空间、局部名称空间

def foo(x, y):

    pass

foo(1,2)

加载顺序:内置———>全局———>局部

加载是指程序运行之初,名称空间加载至内存的顺序

查找的顺序:从当前位置向上查找,若当前位置为局部,即:局部——>全局——>内置

查找指的是查找一个变量名所对应的值

x=1
def outter():
    def wrapper():
        print(x)
    return wrapper
f=outter()
def bar():
    x=111111
f()

全局作用域:全局存活,全局有效(全局名称空间,内置名称空间)

局部作用域:临时存活,临时有效(局部名称空间)

  • 闭包函数: 

x=1

def outter():

    x=10

    def wrapper():

        print(x)

    return wrapper

f=outter()

  • 装饰器
def deco(func): # 无参装饰器
    def wrapper(*args,**kwargs):
        res=func(*args,**kwargs)
        retutrn res
    return wrapper


def deco1(x=1,y=2):  #有参装饰器
    def deco(func):
        def wrapper(*args,**kwargs):
            res=func(*args,**kwargs)
            retutrn res
        return wrapper
    return deco


@deco   #使用装饰器
def index():
    pass

  • 迭代器(迭代器后面必须跟可迭代对象)

for

max (求可迭代对象中的最大值)

min (求可迭代对象中的最小值)

sorted (将可迭代对象进行排序)

filter (按照条件筛选可迭代对象中满足条件的元素)

map (映射)

具体用法参见之前的博客内容。。。。。

  • 匿名函数

lambda  参数1, 参数2 :  表达式

通常配合以下函数使用:max、min、sorted、map、filter

  • 三元表达式、列表推导式,字典生成式,生成器表达式

res=条件成立的结果 if 条件 else 条件成立的结果 # 三元表达式

l=[表达式 for i in 可迭代对象 if 条件] # 列表推导式

g=(表达式 for i in 可迭代对象 if 条件) #生成器表达式

d={k:v for i in 可迭代对象 if 条件} #字典生成式

  • 还有部分内置函数以及函数递归,参见之前写的博客,这里不在赘述。

猜你喜欢

转载自blog.csdn.net/zhou_le/article/details/80723242