如何简化Python隔行重复代码?实现变量与频道ID自动递增
嘿,我来帮你搞定这两个减少重复代码的问题,都是日常编码里很常见的场景!
问题1:避免重复编写
time.sleep(1) 你原来的代码里每次打印后都要写一遍time.sleep(1),确实繁琐又容易出错。最简单的解决思路是把要输出的内容集中管理,用循环统一处理打印和休眠:
import time # 把所有要打印的内容放到一个列表里 message_list = [ "something different1", "something different2", "something different3", "something different4" ] # 遍历列表,一次完成打印+休眠操作 for msg in message_list: print(msg) time.sleep(1)
以后要加新内容,直接往列表里追加就行,完全不用重复写sleep,省心不少~
问题2:实现
after[计数器]与discordchannelid[计数器]自动递增 这个需求用列表存储ID和结果是最优解,比单独创建after1、after2这类零散变量要灵活得多,后期维护也更清晰。
先看推荐的实现方式:
import time # 把所有需要请求的频道ID放到列表里 discord_channel_ids = ["channelid1", "channelid2", "channelid3"] # 替换成你的实际ID after_results = [] # 用来存储每个请求的返回结果 for channel_id in discord_channel_ids: # 用f-string拼接URL,比你原来的写法更简洁直观 url = f"https://discordapp.com/api/channels/{channel_id}/messages?limit=2" # 发起请求并解析JSON response = discord.get(url).json() # 将结果存入列表 after_results.append(response) # 统一执行休眠 time.sleep(1)
之后你要取第1个请求的结果就用after_results[0],第2个用after_results[1],以此类推,完全不需要手动创建带编号的变量。
如果你确实需要生成after1、after2这类命名的变量(不太推荐,因为容易导致代码混乱),也可以用动态变量的方式实现:
import time discord_channel_ids = ["channelid1", "channelid2", "channelid3"] # 用enumerate获取从1开始的计数器 for idx, channel_id in enumerate(discord_channel_ids, start=1): url = f"https://discordapp.com/api/channels/{channel_id}/messages?limit=2" response = discord.get(url).json() # 动态创建after1、after2这类变量 globals()[f"after{idx}"] = response time.sleep(1)
还是强烈建议用列表的方式,动态变量虽然能实现需求,但后期排查问题、扩展功能都会更麻烦。
内容的提问来源于stack exchange,提问作者johnn trann
相关产品推荐
相关产品推荐

