Python(Selenium):如何通过字符串名称获取模块内变量实际值?
解决方法
你当前的代码只是拼接出了变量名的字符串,并没有获取到该变量对应的实际值,这里提供几种实现方式:
方法一:使用globals()获取全局变量
globals()会返回当前全局命名空间的字典,你可以通过变量名字符串作为键,取出对应的值:
from users import * start_user_num = 1 next_user = globals()[f"user{start_user_num}"] print(f"The user is {next_user}")
方法二:通过getattr()从模块中获取变量
这种方式更安全,明确指定从users模块中获取目标变量:
import users start_user_num = 1 next_user = getattr(users, f"user{start_user_num}") print(f"The user is {next_user}")
更推荐的优化方案:重构users模块的结构
单独定义user1、user2这类变量既不便于遍历维护,也不符合Python的编码习惯,建议把用户数据改成列表或字典:
修改users.py:
# 用列表存储,按顺序对应原user1到userN users_list = ["Jeremy", "John", "Alana", "Bella"] # 或者用字典,键可以自定义 users_dict = { "user1": "Jeremy", "user2": "John", "user3": "Alana", "user4": "Bella" }
主代码调用示例:
# 使用列表的情况(注意列表索引从0开始) from users import users_list start_user_num = 1 next_user = users_list[start_user_num - 1] print(f"The user is {next_user}") # 使用字典的情况 from users import users_dict start_user_num = 1 next_user = users_dict[f"user{start_user_num}"] print(f"The user is {next_user}")
这样后续添加用户、遍历用户都会更便捷,代码可读性也更强。
内容的提问来源于stack exchange,提问作者jackpotterkz
相关产品推荐
相关产品推荐

