Python编程基础之函数和模块
作者:howard2005
一、函数和模块概述
(一)函数概述
函数可以看成是语句的集合,通过函数调用来执行其包含的语句。函数可以返回一个计算结果,根据每次函数调用的参数,可以返回不同的计算结果。Python利用函数提高代码的重用率,减少了代码冗余。
执行dir(__builtin__)
可以查看Python所有内置对象
['ArithmeticError', 'AssertionError', 'AttributeError', 'BaseException', 'BlockingIOError', 'BrokenPipeError', 'BufferError', 'BytesWarning', 'ChildProcessError', 'ConnectionAbortedError', 'ConnectionError', 'ConnectionRefusedError', 'ConnectionResetError', 'DeprecationWarning', 'EOFError', 'Ellipsis', 'EnvironmentError', 'Exception', 'False', 'FileExistsError', 'FileNotFoundError', 'FloatingPointError', 'FutureWarning', 'GeneratorExit', 'IOError', 'ImportError', 'ImportWarning', 'IndentationError', 'IndexError', 'InterruptedError', 'IsADirectoryError', 'KeyError', 'KeyboardInterrupt', 'LookupError', 'MemoryError', 'ModuleNotFoundError', 'NameError', 'None', 'NotADirectoryError', 'NotImplemented', 'NotImplementedError', 'OSError', 'OverflowError', 'PendingDeprecationWarning', 'PermissionError', 'ProcessLookupError', 'RecursionError', 'ReferenceError', 'ResourceWarning', 'RuntimeError', 'RuntimeWarning', 'StopAsyncIteration', 'StopIteration', 'SyntaxError', 'SyntaxWarning', 'SystemError', 'SystemExit', 'TabError', 'TimeoutError', 'True', 'TypeError', 'UnboundLocalError', 'UnicodeDecodeError', 'UnicodeEncodeError', 'UnicodeError', 'UnicodeTranslateError', 'UnicodeWarning', 'UserWarning', 'ValueError', 'Warning', 'WindowsError', 'ZeroDivisionError', '__IPYTHON__', '__build_class__', '__debug__', '__doc__', '__import__', '__loader__', '__name__', '__package__', '__spec__', 'abs', 'all', 'any', 'ascii', 'bin', 'bool', 'breakpoint', 'bytearray', 'bytes', 'callable', 'cell_count', 'chr', 'classmethod', 'compile', 'complex', 'copyright', 'credits', 'debugcell', 'debugfile', 'delattr', 'dict', 'dir', 'display', 'divmod', 'enumerate', 'eval', 'exec', 'filter', 'float', 'format', 'frozenset', 'get_ipython', 'getattr', 'globals', 'hasattr', 'hash', 'help', 'hex', 'id', 'input', 'int', 'isinstance', 'issubclass', 'iter', 'len', 'license', 'list', 'locals', 'map', 'max', 'memoryview', 'min', 'next', 'object', 'oct', 'open', 'ord', 'pow', 'print', 'property', 'range', 'repr', 'reversed', 'round', 'runcell', 'runfile', 'set', 'setattr', 'slice', 'sorted', 'staticmethod', 'str', 'sum', 'super', 'tuple', 'type', 'vars', 'zip']
演示Python内置函数
(二)模块概述
模块是程序代码和数据的封装。模块中定义的变量、函数或类等可导入到其他文件中使用。Python正是通过模块提供各种功能,例如,在前面用到的sys
、os
、math
、random
等都是模块。
1、sys模块
查看sys模块包含的对象(属性和方法)
使用sys模块的path
2、os模块
导入os模块
获取当前工作目录
3、math模块
4、random模块
二、函数
- 在编写程序时,往往会遇到在多处使用的类似代码。这时,可将重复代码提取出来,定义为函数。从而简化编程工作量,也使代码结构简化。
- 函数有三要素:函数名(
function name
)、参数列表(parameter list
)、返回值(return value
) - 参数有两种类型:位置参数(
positional parameter)、
键参数(key parameter
)
(一)定义函数
1、语法格式
def: define
def 函数名(参数表): 函数体(语句组) return 返回值
如果我们定义一个函数,没有写return语句,系统会自动给它添加一个return None
2、函数类型
- 无参函数
- 单参函数
- 多参函数
3、案例演示
定义无参函数
定义单参函数(调用时可以用位置参数,也可以用键参数)
定义多参函数
说明:定义函数时的参数叫做形式参数(formal paramter),简称形参(虚参);调用函数时的参数叫做实际参数(actual parameter),简称实参。调用函数,就是将实参传递给形参,进行处理之后,得到返回值。
定义有返回值的函数
(二)调用函数
1、简要说明
- 函数通过函数名加上一组圆括号进行调用,参数放在圆括号内,多个参数之间用逗号分隔。
- 在Python中,所有的语句都是实时执行的,不像C/C++存在编译过程。def也是一条可执行语句,定义一个函数。所以函数的调用必须在函数定义之后。
- 在Python中,函数名也是一个变量,它引用return语句返回的值,没有返回值时,函数值为None。
2、案例演示
编写并调用阶乘函数 - factorial(n)
运行程序,查看结果
(三)函数参数
在定义函数时,参数表中的各个参数称为形式参数,简称形参。调用函数时,参数表中提供的参数称为实际参数,简称实参。在Python中,变量保存的是对象的引用,类似C/C++中的指针。实参传递给形参就是将对象的引用赋值给形参。
1、参数的多态性
多态是面向对象的一个特点,指多一个行为针对不同对象可能会得到不同的结果。Python中的变量无类型属性,变量可引用各种不同类型的对象。同一个函数,传递的实际参数类型不同时,可获得不同的结果,体现了多态性。
2、参数赋值传递
通常,函数调用时按参数的先后顺序,将实参传递给形参。例如:调用add(1, 2.5)时,1传递给a,2.5传递给b。Python允许以形参赋值的方式,指定将实参传递给形参。
三、利用函数实现模块化
1、创建多级菜单系统
编写程序 - 多级菜单系统.py
# -*- coding: utf-8 -*- """ 功能:多级菜单系统 作者:华卫 日期:2021年1月4日 """ def add_record(): print('添加记录功能尚待开发') def query_record(): print('查询记录功能尚待开发') def modify_record(): print('修改记录功能尚待开发') def delete_record(): print('删除记录功能尚待开发') def login(): while True: print('主菜单') print('=============') print('1. 增加记录') print('2. 查询记录') print('3. 修改记录') print('4. 删除记录') print('5. 返回上级菜单') print('==============') mc2 = int(input('输入菜单号:')) if mc2 == 1: add_record() elif mc2 == 2: query_record() elif mc2 == 3: modify_record() elif mc2 == 4: delete_record() else: break while True: print('============') print('1. 登录') print('2. 退出') print('============') mc1 = int(input('输入菜单号:')) if mc1 == 1: login() elif mc1 == 2: print('谢谢使用!') break
2、启动程序,查看效果
总结
篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注脚本之家的更多内容!