Python函数名的第一类对象及使用

枫铃3年前 (2021-10-03)Python225

函数名的第一类对象只是一种称呼,是相对于第二类对象而言的。我们目前用到的函数基本都是第一类对象。

函数名的第一类对象主要有四个方面的应用:

  1. 函数名可以当作值赋值给一个变量
  2. 函数名可以当做另一个函数的参数来使用
  3. 函数名可以当做另一个函数的返回值
  4. 函数名可以当作元素放在容器中

示例一:

def func():
    print(1)

a = func
print(func)  # 函数的内存地址
print(a)
a()

输出的结果为:

<function func at 0x00000197E2D41EA0>
<function func at 0x00000197E2D41EA0>
1

func和a同样都是指向函数的内存地址,当我们调用a时,得到了同调用func相同的结果。

示例二:

'''
Python学习交流,免费公开课,免费资料,
免费答疑,系统学习加QQ群:579817333 
'''
def func():
    print(1)
def foo(a):
    print(a)
foo(func)

输出的结果为:

<function func at 0x0000021FD82C1EA0>

示例三:

def func():
    return 1
def foo(a):
    return a
cc = foo(func)
print(cc)

输出的结果是:

<function func at 0x000002261A231EA0>

示例四:

有这样一个需求:用户选择需要相应的序号进行选择接下来的操作,比如选择 1 会调用注册的函数,选择 2 会调用登陆的函数……从前我们会通过流程控制语句的方式实现:

'''
Python学习交流,免费公开课,免费资料,
免费答疑,系统学习加QQ群:579817333 
'''
def login():
    print("登录")

def register():
    print("注册")

def shopping():
    print("逛")

def add_shopping_car():
    print("加")

def buy_goods():
    print("买")

msg ="""
1.注册
2.登录
3.逛
4.加
5.买
请输入您要选择的序号:
"""
while True:
    choose = input(msg)
    if choose.isdecimal():
        if choose == "1":
            register()
        elif choose == "2":
            login()
        elif choose == "3":
            shopping()
        elif choose == "4":
            add_shopping_car()
        elif choose == "5":
            buy_goods()
        else:
            print("请输入正确的序号")

通过将函数装到字典里,我们可以大量减少重复的代码:

def login():
    print("登录")

def register():
    print("注册")

def shopping():
    print("逛")

def add_shopping_car():
    print("加")

def buy_goods():
    print("买")

msg ="""
1.注册
2.登录
3.逛
4.加
5.买
请输入您要选择的序号:
"""
func_dic = {"1":register,
            "2":login,
            "3":shopping,
            "4":add_shopping_car,
            "5":buy_goods}
while True:
    choose = input(msg) # "5"
    if choose in func_dic:
        func_dic[choose]()
    else:
        print("请输入正确的序号")

这种使用字典调用函数的方式是一种很重要的编程思想,以后将经常用到。

相关文章

利用python同步windows和linux文件

写python脚本的初衷,每次在windows编辑完文件后,想同步到linux上去,只能够登录服务器,...

爬虫基本原理

爬虫基本原理 一、爬虫是什么? 百度百科和维基百科对网络爬虫的定义:简单来说爬虫就是抓取目标网站内容的工具,一般是根据定义的行...

Django 函数和方法的区别

函数和方法的区别 1、函数要手动传self,方法不用传 2、如果是一个函数,用类名去调用,如果是一个方法...

Django 知识补漏单例模式

单例模式:(说白了就是)创建一个类的实例。在 Python 中,我们可以用多种方法来实现单例模式&#x...

Django基础知识MTV

Django简介 Django是使用Python编写的一个开源Web框架。可以用它来快速搭建一个高性能的网站。 Django也是一个MVC框架。但是在Dj...

Python mysql 索引原理与慢查询优化

一 介绍 为何要有索引? 一般的应用系统,读写比例在10:1左右,而且插入操作和一般的更新操作很少出现性能问题,...

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。