python中的函数 #2

2023-12-14 19:41:17

一.空间名与作用域

1.名称空间

名称空间就是存放变量名与变量值关系的地方

空间地址的分类:分为三种:

1.内置的名称空间:在python解释器中自带的,可以直接拿来使用

  1. __doc__:用于存储模块文档字符串的命名空间。

  2. __file__:用于存储当前模块的文件名。

  3. __name__:用于存储当前模块的名称。等

2.全局的名称空间:在py文件中,顶格编写的变量名都是全局的名称空间

username = 'jerry'
def name():
    pass
name()##jerry就是全局的变量

3,局部名称空间:在函数的内部里的就是局部变量


def index():
    a = 1
    b = 2
    print(a, b)## a,b就是局部变量
index()

总结:全局变量就是函数之外的变量就是全局变量,在函数里的变量就是局部变量,局部变量在全局是无法使用的

2.局部名称空间的嵌套
def f1():
    # x = 111
    def f2():
        print('f2')
        # x = 222
        def f3():
            print('f3')
            # x = 444
            def f4():
                x = 555
                print(x)
            f4()
        f3()
    f2()
f1()

3.名称空间的作用域

域:范围,作用域:变量的作用范围

1.内置名称空间:在全局的任意位置都可以使用

2.全局内存空间:在全局的任意位置都可以使用

3.局部的内存空间:一般在局部空间内使用

def index():
    x = 554
    print(x)
index()##x就是在局部的空间中
4.global和nonlocal的使用

global:

x = 100
def index():
    x = 122
    print(x)
index()### x=122

x = 222
def index():
    global x
    x = 122
index()
print(x)  ###x =222 在变量不可变时,使用global来声明这是全部的值

注:如果是可变类型的,则不需要global去声明直接就可以修改。

nonlocal:

def outer():
    x = 555
    def inner():
        x = 444
    inner()
    print(x)
outer()### x = 555 


def outer():
    x = 555
    def inner():
        nonlocal x
        x = 444
    inner()
    print(x)
outer()###x = 444

注:如果是可变类型的,则不需要nonlocal去声明直接就可以修改。

二. 函数对象

函数对象就是函数的名字。

1.函数对象的四种用法

1.函数名可以当成变量赋值

def index():
    print(index)
    return 123
index()## <function index at 0x000001D76E2EF820>
#得到的就是函数的内存地址

def index():
    return 123
a = index
print(a())

index() ##这就是变量值

2.函数名可以当做函数的实参?


def index():
    print('index')
    return None

def func(a):
    a = index
    print('a')
    res = a()
    print(res)
func(index)

3. 函数名可以当场函数的返回值

def index():
    print('index')
    return 'index'

def func():
    print('func')
    return index
res = func()
print(res)
res1 = res()
print(res1)

4. 函数可以当成容器类元素

def index():
    print('index')
    return None
ll = [11,2,334,54,index]
res = ll[4]()
print(res)

2.函数的嵌套与调用
def my_max(a,b):
    if a > b:
        return a
    return b
res = my_max(1, 2)
print(res)


def many(a,b,c,d):
    res =my_max(a,b)
    res1=my_max(res,c)
    res2 =my_max(res1,d)
    return res2
res = many(11, 22, 33, 44)
print(res)
3.闭包函数

闭:函数内部定义的函数,至少有两层函数

包:内部函数要要使用函数外部的函数名称空间的变量名

def index():
    x=555
    print(555)
    def k():
        print('hello', x)
        return k
index()

闭包函数就是传参的两种方式!

第一种:

def name(username):
    print(username)
name('jerry')

第二种:

比较两个数的大小

def index(a,b):
    if a > b:
        return a
    return b
res = index(121, 233)
print(res)

多次传值:

def outer(a,b):
    def my_max():
        if a > b:
            return a
        return b
    return my_max
res = outer(11,22)
print(res())

文章来源:https://blog.csdn.net/weixin_49210718/article/details/132737809
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。