python函数进阶

本文介绍了Python函数的高级用法,包括将函数作为列表元素、函数名赋值、函数作为参数和返回值,以及函数的作用域。特别强调了函数名的可变性及其对函数调用的影响,提醒开发者避免覆盖内置函数。同时,讨论了全局和局部作用域的区别,并通过示例展示了如何在不同作用域中使用变量。
摘要由CSDN通过智能技术生成

python函数进阶

1.函数和函数名

函数名其实就是一个变量,只不过代指的是函数

注意:函数必须先定义才能被调用执行【定义在前调用在后】(解释型语言)

2.1函数做元素

函数相当于一个变量,在列表等元素中可以把函数当做元素

def func():
    return 2
data_list=[1,'func',func,func()]
data_list[0]   #整数1
data_list[1]   #字符串func
data_list[2]   #函数  func
data_list[2]()  #调用函数  2
data_list[3]  #函数值   2

注意:函数可被哈希,所以函数名可以当做集合的元素,字典的键

2.2函数名赋值

  • 将函数名赋值给其他变量,函数名其实就是个变量,代指某个函数;如果将函数名赋值给另一个变量,则此变量也会代指该函数

    def func(a1,a2):
        print(a1,a2)
    a=func
    #a和func都代指上面的函数,都可以执行该函数
    func(1,2)  #3
    a(1,2)     #3
    
  • 对函数名重新赋值,将函数名修改为其他值,函数名便不再代指函数

    def func(a1,a2):
        print(a1,a2)
    func(1,2)
    func='wxy'
    func(2,3) # 报错TypeError: 'str' object is not callable
    
    
    def func(a1,a2):
        print(a1,a2)
    func(1,2)
    def func():
        print(111)
    func()
    #上面函数被覆盖
    func(2,3)  #TypeError: func() takes 0 positional arguments but 2 were given
    

    注意:函数名被重新定义后,就会将变量变成新定义的值,所以在自定义函数时,不要与内置函数重名,否则会覆盖内置函数的功能

    内置函数
    id,len,hex,oct...
    

2.3函数名做参数和返回值

  • 参数(函数当参数)

    def add(num):
        return num+1
    def handler(func):
        res=func()  #调用传入的函数
        print(res)  #打印函数返回值
    #将add函数以参数的形式传入handler中
    handler(add)
    
  • 返回值(函数当返回值)

    def add(num):
        return num+1
    def handler():
        print('你好')
        return add
    #调用handler函数,返回值为add函数
    result=handler()
    #调用add函数,返回值赋值给data
    data=result(1)  2
    

3.返回值和print

  • 在函数中使用print,只是用于在某个位置输出内容
  • 在函数中使用return,将函数执行的结果返回给调用者,以便后续操作
    注意:执行函数,要懂的分析函数执行的步骤

4.作用域

作用域,理解为是一块空间,空间里的数据可以共享,其他空间的无法获取

4.1函数为作用域

  • python以函数为作用域,所以在函数中创建的数据,函数内部都可以被使用,但无法在其他函数中使用

  • 了解变量在哪个作用域是否可以别调用

    def func():
        #在循环的时候,函数空间内会创建变量num,在循环中重新赋值,最后num=9
        for num in range(10):
            print(num)
        #python以函数为作用域,所以for循环外面调用num,也不报错
        print(num)  #9
    

4.2全局和局部

函数作用域就是一个局部作用域
在这里插入图片描述

  • 全局作用域创建的变量称为【全局变量】,可以在全局作用域使用,也可以在局部作用域使用
  • 函数内部维护的就是一个局部作用域,在各自函数内部创建的变量称为【局部变量】,局部变量只能在自己的作用域使用,局部作用域使用变量查找顺序【先在自己的作用域中找,如果没有,再查找上一级】

注意:全局变量一般都是大写

https://www.luffycity.com/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

荼靡~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值