学习python的第四十二天-第五章 模块与函数

时间:2022-07-10 22:30:07

第五章 模块与函数

这章主要是介绍python模块和函数的特性。

5.1 程序的结构

python的程序是由包,模块和函数组成。模块是处理某一类问题的集合,模块是由函数和类组成。包是由一系列模块组成的集合,至少包含__init__.py文件的文件夹,类似于一个完成特定任务的工具箱,python提供了许多有用的工具包,如字符串处理,图形用户接口,Web应用,图形图像处理。

5.2 模块

from...import...语句格式如下:

from module_name import function_name

pythonimport语句比较灵活,甚至可以放在条件语句中。模块内置一些属性,用于完成特定的任务。如__name____doc__。每个模块都有一个名称,例如__name__用于判断当前模块是否是程序的主入口,如果当前程序正在被使用,__name__的值为__main__

if __name__ == "__main__":
    print ("作为主程序入口")
else:
    print ("被另一个模块调用")

第一行代码用于判断是否作为主程序运行,如果是运行此程序,就打印“作为主程序入口”,如果是被别的程序调用,就打印“被另一个模块调用”。__doc__这个就是文档字符串,之前介绍过,用于给程序某些内容输出给用户看,引导用户使用程序。

函数

函数就是一段可以重复多次调用的代码,通过输入参数值,返回需要的结果。函数名可以是字母,数字或下划线组成的字符串,但是不能以数字开头,函数的参数放在一对圆括号中,参数的个数可以有一个或者多个,参数之间用逗号隔开。

#函数的定义
from __function__ import division

def arithmetic (x, y, operator):
    result = {
        "+" : x + y,
        "-" : x - y,
        "*" : x * y,
        "/" : x / y
        }

函数的参数也可以使用默认值,比如这样:

#函数的定义
from __function__ import division

def arithmetic (x = 1, y = 1, operator = "+" ):
    result = {
        "+" : x + y,
        "-" : x - y,
        "*" : x * y,
        "/" : x / y
        }

这么写的话如果不输入参数的话就默认参数值了。参数可以是变量,元组,列表等内置数据结构。

python还提供另一个标识符“**”。在形式参数前面添加“**”,可以引用一个字典,根据实际参数的赋值表达式生成字典。

*”必须写在“**”的前面,这是语法规定。

函数的返回使用return语句,return后面可以是变量或表达式。

#多个return语句

def func(x):
    if x > 0:
        return print ("x > 0")
    if x == 0:
        return print ("x = 0")
    if x < 0:
        return print ("x < 0")
print (func(2))

这是return语句的用法,不过不推荐多个return语句的写法,往往会造成程序的复杂化,重构以后是这样的:

#多个return语句

def func(x):
    if x > 0:
        result = "x > 0"
    elif x == 0:
        result = "x = 0"
    else x < 0:
        result = "x < 0"
    return result

print (func(2))

函数的嵌套是指在函数的内部调用其他函数,不过函数嵌套不易过多,应控制在3层以内。

#函数嵌套
def sum(a, b):
    return a + b
def sub(a, b):
    return a - b
def func():
    x = 1
    y = 2
    m = 3
    n = 4
    return sum(x, y) * sub(m, n)
print (func())

递归函数可以在函数主体内直接或间接的调用自己,即函数的嵌套是函数本身。递归是一种程序设计方法,使用递归可以减少重复的代码,使程序变得简洁。递归的过程分为两个阶段——递推和回归。第一阶段,递归函数在内部调用自己,第二阶段,递归函数从后往前返回。递归函数需要编写递归结束的条件,否则程序无法结束。一般通过判断语句结束程序。

`lambda函数的格式:

lambda 变量1, 变量2... : 表达式

通常把lambda赋值给一个变量,变量就可作为函数使用。用法例如:

sum = lambda x, y : x + y
print (sum)

lambda也成为表达式。lambda中只能使用表达式,不能使用判断,循环等多重语句。

许多任务都是由若干个函数组成,这些函数把任务细化,实现明确的功能,最后把这些函数组合起来形成一个完整的模块。