第5章 Python函数与模块_第1页
第5章 Python函数与模块_第2页
第5章 Python函数与模块_第3页
第5章 Python函数与模块_第4页
第5章 Python函数与模块_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Python基础教程第5章:函数与模块目录函数基础:定义、调用与返回深入参数:从位置到关键字变量作用域:LEGB规则解析模块与包:组织你的代码实战案例:学生信息管理系统常见问题与调试技巧总结与课后任务函数基础:定义、调用与返回FUNDAMENTALSOFFUNCTIONS函数的定义与调用函数定义语法deffunction_name(parameters):"""函数文档字符串(docstring)"""#函数体代码块returnexpressiondef关键字:用于声明一个函数。function_name:函数名,遵循变量命名规则。parameters:参数列表,函数的输入。return:返回语句,将结果返回给调用者。函数“定义-调用-返回”流程示意函数的返回值(return)单个返回值函数可以返回一个单一的值。defadd(a,b):result=a+breturnresultprint(add(3,5))#输出:8多个返回值本质上是返回一个元组。defget_info():return"Alice",30,"NY"name,age,city=get_info()print(name,age,city)#输出:Alice30NY重点:`return`语句会立即终止函数的执行。深入参数:从位置到关键字探索Python函数参数的灵活性与强大功能参数类型参数类型描述调用示例位置参数最基本的参数类型,必须按顺序传入。func(1,2,3)关键字参数通过参数名指定,顺序可以灵活调整。func(a=1,b=2)默认参数定义时指定默认值,调用时可省略。deffunc(a,b=10):...可变位置参数*args接收任意数量的位置参数,打包成元组。deffunc(*args):...可变关键字参数**kwargs接收任意数量的关键字参数,打包成字典。deffunc(**kwargs):...参数传递的本质:对象引用1.不可变对象(int,str,tuple)函数内部对引用的修改,不会影响外部变量。defmodify(x):x=x+10#创建新对象print("Inside:",x)#Inside:15a=5;modify(a);print("Outside:",a)#Outside:52.可变对象(list,dict,set)通过引用修改对象内容,会影响外部变量。defmodify_list(lst):lst.append(100)#修改原对象print("Inside:",lst)#[1,2,3,100]my_list=[1,2,3];modify_list(my_list);print(...)#[1,2,3,100]结论传递的是引用。函数能否修改外部变量,取决于该引用指向的对象是否可变。3.变量作用域:LEGB规则解析Python变量查找的核心原则变量作用域与LEGB规则Python变量查找优先级L(Local):当前函数或代码块内部。E(Enclosing):嵌套函数的外层函数作用域。G(Global):整个模块(.py文件)的全局作用域。B(Built-in):Python解释器内置的变量和函数。代码验证#G(Global)

global_var="我是全局变量"

#E(Enclosing)

defouter_function():...#L(Local)definner_function():...修改外部变量:global与nonlocal1.global关键字用于在函数内部声明要修改的是全局变量。x=10#全局变量defmodify_global():globalxx=20#输出:202.nonlocal关键字用于在嵌套函数内部声明要修改的是外层变量。defouter():y=10definner():nonlocalyy=20#输出:20这两个关键字明确地告诉Python解释器,你希望修改的是哪个作用域的变量,是打破作用域隔离的一种方式。4.模块与包:组织你的代码什么是模块(Module)定义在Python中,一个扩展名为`.py`的文件就是一个模块。它可以包含函数、类、变量和可执行代码。核心作用代码复用将常用功能封装成模块,供其他程序导入使用,避免重复“造轮子”。逻辑分组将相关的功能组织在同一个模块中,使代码结构更清晰,易于维护。避免命名冲突不同模块中的同名函数或变量互不干扰,属于不同命名空间。模块的导入方式导入整个模块importmodule_name

result=module_name.function_name()优点:命名空间清晰。缺点:每次调用都需要写模块名。导入特定成员frommoduleimportfunc,Class

result=func()优点:调用方便。缺点:可能造成命名冲突。导入所有成员(不推荐)frommodule_nameimport*缺点:极易造成命名冲突,来源不明。导入并指定别名importmodule_nameasalias

result=alias.function_name()优点:简洁,尤其适用于长模块名(如`importnumpyasnp`)。推荐使用方式1和4,以保持命名空间清晰,避免冲突。实战案例:学生信息管理系统综合运用函数、变量作用域等知识,巩固本章所学实战案例:需求分析功能需求添加学生信息录入学生的学号、姓名和成绩。查询学生信息根据学号查询学生的详细信息。修改学生信息根据学号修改学生的姓名和成绩。更多功能删除学生信息根据学号删除学生记录。显示所有学生信息列出系统中所有学生的信息。退出系统结束程序运行。列表存储:使用列表存储所有学生信息。函数封装:使用函数封装各个功能模块。菜单交互:使用无限循环构建菜单交互。数据共享:使用全局变量在函数间共享数据。代码实现:核心函数(上)#全局变量:用于存储所有学生信息students=[]

defadd_student():"""添加学生信息"""student_id=input("请输入学号:")students.append({...})

defsearch_student():"""根据学号查询学生信息"""student_id=input("请输入要查询的学号:")forstudentinstudents:...

defdisplay_all_students():"""显示所有学生信息"""ifnotstudents:...代码实现:主程序与菜单defmain():"""主函数,程序入口"""whileTrue:#显示菜单并根据选择执行功能choice=input("请输入您的选择(1-6):")ifchoice=='1':add_student()elifchoice=='2':search_student()elifchoice=='3':pass#练习:实现modify_student()elifchoice=='4':pass#练习:实现delete_student()elifchoice=='5':display_all_students()elifchoice=='6':breakelse:print("输入错误,请重新选择!")if__name__=="__main__":main()注:`if__name__=="__main__":`确保main()函数仅在模块被直接运行时执行。6.常见问题与调试技巧定位问题根源,提升开发效率常见问题(FAQ)Q1:NameError:name'xxx'isnotdefined原因:变量未定义或作用域错误。解决:检查拼写,确保变量在使用前定义且作用域正确。Q2:TypeError:func()missing1requiredpositionalargument原因:函数调用参数数量不匹配。解决:检查函数定义和调用处的参数列表。Q3:ImportError:Nomodulenamed'xxx'原因:Python解释器找不到指定模块。解决:检查模块名拼写和文件路径。Q4:UnboundLocalError:localvariablereferencedbeforeassignment原因:函数内变量在赋值前被使用。解决:使用`global`或`nonlocal`关键字声明。本章总结函数是核心函数是实现代码复用、逻辑封装和模块化编程的基础。参数要灵活掌握位置参数、关键字参数、默认参数、`*args`和`**kwargs`的用法。作用域要清晰理解LEGB规则,合理使用`global`和`nonlocal`关键字。模块来组织学会使用模块来组织代码,避免命名冲突,提升代码的可维护性。实践出真知:多动手编写代码,通过实践来巩固和深化理解。课后实操任务任务:完善学生信息管理系统实现`modify

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论