python中的函数 #2

一.空间名与作用域

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())

相关推荐

  1. python函数 #2

    2023-12-15 00:34:01       39 阅读
  2. Python函数

    2023-12-15 00:34:01       30 阅读
  3. Python函数

    2023-12-15 00:34:01       6 阅读
  4. pythonmap函数

    2023-12-15 00:34:01       41 阅读
  5. PythonLambda函数

    2023-12-15 00:34:01       31 阅读
  6. pythonzip函数

    2023-12-15 00:34:01       20 阅读
  7. pythonisdecimal函数

    2023-12-15 00:34:01       12 阅读

最近更新

  1. TCP协议是安全的吗?

    2023-12-15 00:34:01       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2023-12-15 00:34:01       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2023-12-15 00:34:01       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2023-12-15 00:34:01       18 阅读

热门阅读

  1. WPF里面的Dispatcher详解

    2023-12-15 00:34:01       36 阅读
  2. Go HTTP 调用(上)

    2023-12-15 00:34:01       30 阅读
  3. Docker常用命令总结

    2023-12-15 00:34:01       43 阅读
  4. leetcode做题笔记2048. 下一个更大的数值平衡数

    2023-12-15 00:34:01       33 阅读
  5. RESTful API,以及如何使用它构建 web 应用程序

    2023-12-15 00:34:01       31 阅读
  6. 【Python 千题 —— 基础篇】多行输出

    2023-12-15 00:34:01       39 阅读
  7. 如何在PHP中发送电子邮件?

    2023-12-15 00:34:01       47 阅读