You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python跨模块导入函数后如何访问内部变量并设为全局

错误原因

tn是my_function()内部定义的局部变量,作用域仅限函数内部,函数执行结束后外部无法直接访问该变量,和模块导入逻辑无关。另外你原代码里导入模块的写法有误,import引入模块时不需要加.py后缀。

推荐修复方案

让函数返回创建好的telnet连接实例,在调用处用变量接收返回值即可,这是最清晰、最易维护的写法:

调整config.py代码

import telnetlib

def my_function(a):
    tn = telnetlib.Telnet(a)
    # 将连接对象作为返回值抛出
    return tn

调整main.py代码

import config

HOST = "172.25.25.5"
# 接收函数返回的连接实例
tn = config.my_function(HOST)

tn.write(b"show run".encode('ascii') + b"\n")
不推荐的替代方案

你也可以将tn定义为config模块的全局变量,通过global关键字在函数内修改全局变量值,调用完函数后通过config.tn访问对象,但这种写法容易引发全局变量污染,多实例场景下很容易出现变量覆盖问题,非特殊场景不建议使用:
config.py示例:

import telnetlib
tn = None

def my_function(a):
    global tn
    tn = telnetlib.Telnet(a)

main.py调用示例:

import config
HOST = "172.25.25.5"
config.my_function(HOST)
# 通过模块属性访问tn
config.tn.write(b"show run".encode('ascii') + b"\n")

内容的提问来源于stack exchange,提问作者bgardne7

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 21:06:34