我将介绍如何在Python中定义和使用函数,以及如何创建和使用Python模块。这些基础知识将帮助你编写更高效和可复用的代码。
image.png

函数基础

image.png

定义和调用函数

定义函数:Python中有很多自带的函数,比如print(),但你也可以定义自己需要的函数。函数定义的基本格式是:

def 函数名(参数列表):
    函数体

举个例子:

def sum(a, b):
    return a + b

调用函数:Python内部的很多函数和自己定义的函数都可以直接调用。例如:

result = sum(3, 6)
print(result)  # 输出:9
参数传递

image.png

为了方便调用自己的函数,我们会先确定参数的名称和位置,然后将函数的主体封装起来。

位置参数:这是最简单的一种参数形式,上面sum()函数中的ab就是位置参数。

默认参数:默认参数是在定义函数时确定的参数,在调用函数时可传可不传。位置参数一定要放在默认参数之前。例如:

def sum(a, b, c=20):
    return a * b + c

print(sum(2, 3))      # 输出:26
print(sum(2, 3, c=10))  # 输出:16

关键字参数:当参数个数太多或者你忘记了参数的位置,可以使用关键字参数通过“键-值”的方式传入。例如:

print(sum(a=5, b=4))  # 输出:40
print(sum(b=4, a=5))  # 输出:40

可变参数:有的函数需要输入的参数个数是可变的,这时候可以定义可变参数。

def func(*args):
    total = 0
    for i in args:
        total += i
    return total

print(func(2, 5, 10))  # 输出:17
print(func(3, 7))      # 输出:10
print(func())          # 输出:0

这里星号*的作用是将传入的位置参数变成一个tuple

包裹关键字参数

def func(**kw):
    total = 0
    for value in kw.values():
        total += value
    return total

print(func(a=1, b=2, c=3))  # 输出:6

函数式编程

匿名函数

image.png

有时我们不需要显式定义一个函数,而可以使用匿名函数。匿名函数使用关键字lambda,基本语法为:lambda arg: expression

sum = lambda a, b: a + b
print(sum(2, 3))  # 输出:5
高阶函数

如果一个函数可以接受另一个函数作为参数,那么这个函数就是高阶函数。
image.png

map()函数:接受两个参数,一个是函数,一个是可迭代的对象(Iterable),函数依次作用于每一个元素,返回一个迭代器(Iterator)。

a = map(lambda x: x ** 2, range(5))
print(list(a))  # 输出:[0, 1, 4, 9, 16]

reduce()函数:也接受两个参数,一个是函数,另一个是Iterable。

from functools import reduce

def add(a, b):
    return a + b

print(reduce(add, range(5)))  # 输出:10 (0 + 1 + 2 + 3 + 4)

filter()函数:函数依次作用于每一个元素,判断其真假(True or False),然后根据真或假来决定保留还是丢弃该元素。

def is_even(n):
    return n % 2 == 0

print(list(filter(is_even, range(6))))  # 输出:[0, 2, 4]

sorted函数

print(sorted([3, 5, 1, -8, 2], key=abs))  # 输出:[1, 2, 3, 5, -8]
print(sorted([("a", 2), ("b", 1), ("c", 3)], key=lambda x: x[1]))  # 输出:[('b', 1), ('a', 2), ('c', 3)]

装饰器

image.png

装饰器可以在不改变函数本身的情况下给函数添加新的功能。

def hello(func):
    def wrapper(*args):
        print("hello xiaoyang!")
        return func(*args)
    return wrapper

@hello
def add(*args):
    total = 0
    for n in args:
        total += n
    return total

print(add(2, 5, 7))  # 输出:hello xiaoyang! 14

模块和包

image.png

一个Python模块就是一个.py文件,一个Python包就是包含一个或多个模块的目录。

创建模块

创建一个叫hello.py的文件:

"This is a hello module"  # 模块的__doc__属性

__author__ = "xiaoyang Li"

def hello():
    print("Hello xiaoyang!")

if __name__ == "__main__":
    hello()

使用模块
image.png

import hello
hello.hello()  # 输出:Hello xiaoyang!

常用的标准库模块

image.png

sys模块

import sys

print(sys.argv)  # 命令行参数列表
print(sys.path)  # 模块检索路径
print(sys.modules.keys())  # 已导入的模块列表

os模块

import os

os.mkdir('test_dir')  # 创建目录
os.rmdir('test_dir')  # 删除目录
print(os.getcwd())  # 获取当前路径

datetime模块

import datetime

print(datetime.datetime.now())  # 当前日期和时间

通过本章的学习,你应该已经掌握了如何定义和使用Python中的函数以及如何创建和使用模块。

希望这些知识能帮助你在编写Python代码时更加得心应手。

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部