
日常查日历,我们习惯打开手机APP,但你知道吗?用Python的 标准库calendar,只需5行核心代码就能自己生成个性化日历——不用额外安装任何依赖,甚至能精准到某一年某一月的每一天!
最近,技术社区clcoding.com分享的一段代码示例,把“生成日历”这件事简化到了极致,完美体现了Python“开箱即用”的优势。
先看图片里的核心代码:
import calendar # 导入Python内置的日历库print("Calendar Program") # 友好的程序标题# 交互输入:获取用户指定的年份和月份year = int(input("Enter year: ")) month = int(input("Enter month (1-12): ")) # 生成并打印日历print("\nHere is the calendar:\n") print(calendar.month(year, month)) # 关键函数:生成指定年月的日历逐行解析:
import calendar:Python自带的calendar库是“日期处理神器”,封装了所有日期计算逻辑(比如闰年判断、每月天数、星期分布),无需自己写复杂算法。input()获取用户输入的年份和月份,再用int()转成整数——因为calendar.month()函数要求参数是整数类型。calendar.month(year, month):这个函数会返回一个格式化的字符串,包含指定年月的完整日历(从星期几开始、日期排列、月份标题),直接打印就能得到和纸质日历一样的效果。图片下方展示了实际运行结果:
2026(年份)和1(月份);January 2026;Mo周一、Tu周二…Su周日);甚至连“空格对齐”这种细节都帮你做好了——比如1月1日前面的空格(因为1月1日是周四,所以周一到周三的位置是空的),完全符合我们日常看日历的习惯!
calendar库的能力远不止于此,你可以轻松扩展功能:
calendar.calendar(year),比如print(calendar.calendar(2026)),会输出2026年所有月份的日历;calendar.day_abbr可以获取中文缩写,如calendar.day_abbr[0]是“周一”);calendar.monthrange(year, month)返回该月的“第一天星期几”和“总天数”,比如calendar.monthrange(2026, 1)会返回(3, 31)(3代表周四,31是1月的天数);calendar.isleap(year)直接返回布尔值,比如calendar.isleap(2024)是True(2024是闰年)。这段代码的妙处在于:把复杂的日期逻辑交给标准库,开发者只关注“业务需求”——你不需要懂“Zeller公式”(计算星期几的算法),不需要自己维护“每月天数表”,甚至不用考虑“闰年2月有29天”这种细节,calendar库已经帮你搞定了一切。
这正是Python的核心优势:用最少的代码解决最实际的问题。比如你想做一个“生日提醒工具”,只需在此基础上加一行:
birthday = input("Enter your birthday (YYYY-MM-DD): ")# 解析日期并判断当天是星期几或者做一个“日程表生成器”,把日历和待办事项结合——所有功能都能基于calendar库快速实现。
现在打开你的Python编辑器(比如IDLE、VS Code),复制这段代码运行:
2025和12,生成2025年圣诞节的日历;calendar.day_abbr获取中文缩写)。Python的乐趣,往往就藏在这些“小而美”的标准库里——不用追求复杂的框架,用最基础的工具也能创造实用的小工具。下次需要处理日期时,记得先想想:calendar库能不能帮我省点事?