最省事的方式是调用calendar.prmonth(年, 月),它直接打印格式化日历;若需字符串则用textcalendar().formatmonth(年, 月),注意月份必须为1–12整数且需print()才显示。

直接用 calendar.TextCalendar 或 calendar.prmonth() 就能打印格式化日历,不需要额外安装或配置。
怎么快速打出某年某月的日历?
最省事的方式是调用 calendar.prmonth() —— 它直接把日历输出到终端,带星期头和日期对齐:
import calendar calendar.prmonth(2024, 4) # 打印2024年4月
注意:prmonth() 第一个参数是年(int),第二个是月(1–12),不能传字符串或0开头的数字(比如 04 会报 SyntaxError)。
- 如果想获取日历字符串而非直接打印,用
calendar.TextCalendar().formatmonth(2024, 4) -
prmonth()默认以周一为每周起始,要改成周日开头,得先实例化:calendar.TextCalendar(calendar.SUNDAY).prmonth(2024, 4) - 月份超出 1–12 范围会抛
IllegalMonthError,不是静默忽略
为什么 calendar.month() 返回的字符串里有换行符但不自动显示?
calendar.month(2024, 4) 返回的是含 \n 的字符串,但如果你只写 calendar.month(2024, 4) 不加 print(),终端不会换行渲染——这是新手常卡住的地方。
SkillSub Pro - Python 题解与代码注释双功能技能功能概述SkillSub Pro - Python 题解与代码注释双功能技能是一项面向实际任务的技能,主要用于SkillSub Pro 是一个 Python 题解生成与代码注释的 双功能合体技能 ,专为学生、算法学习者和开发者设计;✅ 一个技能,两种用途 :;核心要点📝 题解模式 :输入题目/题号,自动生成完整 Python 题解(含详细注释、解题思路、复杂度分析);💬 注释模式 :输入 Python 代码,自动添加详细中。它将相关步骤、
- 错误写法:
calendar.month(2024, 4)(返回值被丢弃,无输出) - 正确写法:
print(calendar.month(2024, 4)) - 它和
prmonth()输出内容一致,只是前者返回字符串、后者直接打印
想自定义日历宽度或对齐方式怎么办?
TextCalendar 支持 w(每个日期占宽)和 l(行高)参数,影响对齐和可读性:
c = calendar.TextCalendar(w=3, l=1) # 每个日期占3字符宽,行高1 print(c.formatmonth(2024, 4))
默认 w=2,但当月份含两位数日期(如 10、23)时,w=2 会导致列错位;设成 w=3 更稳。
-
w太小(如w=1)会让日期挤在一起,难以区分 -
l控制周与周之间的空行数,l=0会让日历“贴”在一起,可读性下降 - 这些参数只影响
TextCalendar实例的方法(formatmonth/prmonth),不影响calendar.month()
真正容易被忽略的是:所有 calendar 函数都按公历(Gregorian calendar)计算,不处理儒略历、闰秒或本地化星期名称——如果需要中文星期头或农历,得自己替换字符串或换库。
Python免费学习笔记(深入):立即使用
在学习笔记中,你将探索 Python 的核心概念和高级技巧!










