掌握Python函数和模块的使用
欢迎来到Python函数与模块单元!在本单元中,你将学习如何使用函数来组织代码,以及如何使用模块来重用代码。
函数是一段可重用的代码,它可以接收输入参数并返回输出结果。模块是一个包含Python定义和语句的文件,它可以被其他程序导入和使用。掌握函数和模块的使用是编写高质量Python代码的关键。
函数是一段可重用的代码块,通过def关键字定义。
# 定义函数
def greet(name):
"""打印问候信息"""
print(f"你好,{name}!")
# 调用函数
greet("小明") # 你好,小明!
# 带返回值的函数
def add(a, b):
"""计算两个数的和"""
return a + b
# 调用带返回值的函数
result = add(3, 5)
print(result) # 8
# 带默认参数的函数
def greet(name, greeting="你好"):
"""打印问候信息,默认问候语为"你好""""
print(f"{greeting},{name}!")
# 调用带默认参数的函数
greet("小明") # 你好,小明!
greet("小明", "早上好") # 早上好,小明!
Python支持多种参数传递方式,包括位置参数、关键字参数、可变参数等。
# 位置参数
def describe_pet(animal_type, pet_name):
"""描述宠物"""
print(f"我有一只{animal_type}。")
print(f"它的名字叫{pet_name}。")
# 按位置传递参数
describe_pet("狗", "旺财")
# 关键字参数
describe_pet(animal_type="猫", pet_name="咪咪")
describe_pet(pet_name="花花", animal_type="兔子")
# 可变参数(*args)
def sum_numbers(*numbers):
"""计算任意数量数字的和"""
total = 0
for number in numbers:
total += number
return total
# 调用可变参数函数
print(sum_numbers(1, 2, 3)) # 6
print(sum_numbers(1, 2, 3, 4, 5)) # 15
# 关键字可变参数(**kwargs)
def build_profile(first, last, **user_info):
"""构建用户资料"""
profile = {"first_name": first, "last_name": last}
for key, value in user_info.items():
profile[key] = value
return profile
# 调用关键字可变参数函数
user_profile = build_profile("张", "三", age=18, city="北京", job="学生")
print(user_profile)
局部变量是在函数内部定义的变量,只能在函数内部使用。全局变量是在函数外部定义的变量,可以在整个程序中使用。
# 全局变量
message = "Hello, global!"
def show_message():
# 局部变量
local_message = "Hello, local!"
print(local_message) # 访问局部变量
print(message) # 访问全局变量
show_message()
print(message) # 访问全局变量
# print(local_message) # 这会报错,因为局部变量在函数外部不可访问
# 修改全局变量
def modify_global():
global message # 声明要修改全局变量
message = "Hello, modified!"
print(message)
modify_global()
print(message) # 输出修改后的全局变量
模块是一个包含Python定义和语句的文件,它可以被其他程序导入和使用。
# 导入整个模块
import math
# 使用模块中的函数
print(math.sqrt(16)) # 4.0
print(math.pi) # 3.141592653589793
# 导入模块中的特定函数
from math import sqrt, pi
print(sqrt(25)) # 5.0
print(pi) # 3.141592653589793
# 导入模块中的所有函数
from math import *
print(sin(0)) # 0.0
print(cos(0)) # 1.0
# 给模块指定别名
import math as m
print(m.sqrt(36)) # 6.0
# 给导入的函数指定别名
from math import sqrt as square_root
print(square_root(49)) # 7.0
Python标准库包含许多有用的模块,可以帮助我们完成各种任务。
# 使用random模块
import random
# 生成随机整数
print(random.randint(1, 10)) # 生成1-10之间的随机整数
# 从列表中随机选择一个元素
fruits = ["苹果", "香蕉", "橙子", "葡萄"]
print(random.choice(fruits)) # 随机选择一个水果
# 打乱列表
random.shuffle(fruits)
print(fruits) # 打乱后的列表
# 使用datetime模块
import datetime
# 获取当前日期和时间
now = datetime.datetime.now()
print(now) # 输出当前日期和时间
# 格式化日期
print(now.strftime("%Y-%m-%d %H:%M:%S")) # 格式化为年-月-日 时:分:秒
# 使用os模块
import os
# 获取当前工作目录
print(os.getcwd()) # 输出当前工作目录
# 列出目录中的文件和文件夹
print(os.listdir(".")) # 列出当前目录中的内容
# 使用sys模块
import sys
# 打印Python版本
print(sys.version) # 输出Python版本
# 打印命令行参数
print(sys.argv) # 输出命令行参数
你可以创建自己的模块,然后在其他程序中导入和使用。
# 假设我们创建了一个名为mymodule.py的文件,内容如下:
'''
# mymodule.py
def greet(name):
"""打印问候信息"""
return f"你好,{name}!"
def add(a, b):
"""计算两个数的和"""
return a + b
PI = 3.141592653589793
'''
# 在另一个文件中导入和使用
# import mymodule
#
# print(mymodule.greet("小明")) # 你好,小明!
# print(mymodule.add(3, 5)) # 8
# print(mymodule.PI) # 3.141592653589793
# 或者
# from mymodule import greet, add, PI
#
# print(greet("小明")) # 你好,小明!
# print(add(3, 5)) # 8
# print(PI) # 3.141592653589793
编写一个函数,计算两个数的乘积,并调用该函数计算不同数值的乘积。
编写一个函数,计算矩形的面积,函数接收长度和宽度作为参数,并返回面积。
编写一个函数,计算任意数量数字的平均值。
使用random模块生成一个随机密码,密码长度为8位,包含大小写字母和数字。
创建一个名为calculator.py的模块,包含加、减、乘、除四个函数,然后在另一个文件中导入并使用这些函数。
《Python编程:从入门到实践》
《Python基础教程》
Python官方文档 - 函数
菜鸟教程 - Python函数
Anaconda
Jupyter Notebook