IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> Python自学笔记1:定义了函数但是还报未定义? -> 正文阅读

[Python知识库]Python自学笔记1:定义了函数但是还报未定义?

Python自学笔记:定义了函数但是还报未定义?

省流助手:
解决办法:试试把报未定义的函数放在main函数前面

解题过程:
这几天因为项目作业需要,在b站上找了个Python教程想入入门
网课传送门(非广告)
好不容易,看到了最后的实战项目——学生信息管理系统
照着老师敲完第137节的代码,一运行发现报错,说未定义
在这里插入图片描述
请添加图片描述
我不理解,于是求助大佬同学,大佬说要不你把menu函数移到main函数前面看看?

我觉得这很扯,因为按照之前C、C#、C++的编程经验,似乎一个文件里面函数都可以互相找到,没有这么严格的顺序要求的,所以就主观否定了这种可能的原因,一开始没有去这么改(这样不对!千万不能过于经验主义墨守成规)

但是不得不说,确实把menu函数换了个位置,他就活了。
请添加图片描述
然后为了弄明白为什么会这样,我又去查了一下其他码友遇到的类似困难:
https://www.it1352.com/1670921.html
在这里插入图片描述
https://ask.csdn.net/questions/362761?locationNum=8&fps=1
在这里插入图片描述
看起来像是没有声明,直接就把定义写在主函数后面使用造成的
为了验证我的猜想,我又把menu函数放了回去,试着用C语言的办法先开头声明然后定义,但是他报错······
(是的,我居然没想到C语言能乱序写是因为函数都是有声明的,而C#、C++人家自己函数都在一个类的{}里面,我猜测应该跟这些结构有关系我才能把函数顺序写的那么随意······)
在这里插入图片描述
然后我又去百度python函数应该怎么声明,也没找出个明确的答案······
在这里插入图片描述
没关系,下次注意不要把要用的函数定义放后面就行了,既然暂时找不到一劳永逸的办法,就自己写的时候注意点吧。

完整代码:

def menu():
    print('==========================学生信息管理系统===============================')
    print('------------------------------功能菜单--------------------------------')
    print('\t\t\t\t\t\t1.录入学生信息')
    print('\t\t\t\t\t\t2.查找入学生信息')
    print('\t\t\t\t\t\t3.删除学生信息')
    print('\t\t\t\t\t\t4.修改学生信息')
    print('\t\t\t\t\t\t5.排序')
    print('\t\t\t\t\t\t6.统计学生总人数')
    print('\t\t\t\t\t\t7.显示所有学生信息')
    print('\t\t\t\t\t\t0.退出')
    print('==========================学生信息管理系统===============================')

def main():
    while True:
        menu()
        choice=int(input('请选择'))
        if choice in[0,1,2,3,4,5,6,7]:
            if choice==0:
                answer=input('您确定要退出系统吗?y/n')
                if answer=='y' or answer=='Y':
                    print('谢谢您的使用!!!')
                    break #退出系统
                else:
                    continue;
            elif choice==1:
                insert() #录入学生信息
            elif choice==2:
                search()
            elif choice==3:
                delete()
            elif choice==4:
                modify()
            elif choice==5:
                sort()
            elif choice==6:
                total()
            elif choice==7:
                show()

def insert():
    pass

def search():
    pass

def delete():
    pass

def modify():
    pass

def sort():
    pass

def total():
    pass

def show():
    pass

if __name__ =='__main__':
    main()


  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2022-05-09 12:36:21  更:2022-05-09 12:39:27 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 14:44:28-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码