在一个py模块中如何调用另一个py文件(import导入的)局部变量,如果这个局部变量是执行scoket语句bind()建立连接的scoket对象,如何调用?调用后可以用这个对象sendall函数发数据吗
时间: 2023-06-13 19:06:19 浏览: 53
如果想在一个 Python 模块中调用另一个 Python 文件中的局部变量,最好的做法是将这个变量定义为全局变量,或者将其定义为一个函数返回值。这样,调用方就可以直接使用这个变量或者函数返回值了。
如果局部变量是一个 socket 对象,那么可以将其定义为全局变量,然后在其他模块中导入这个全局变量。例如,在模块 A 中定义 socket 对象:
```python
import socket
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.bind(('localhost', 8000))
sock.listen(1)
```
然后在模块 B 中导入这个 socket 对象:
```python
from A import sock
data = b'hello, world!'
sock.sendall(data)
```
这样就可以使用模块 A 中定义的 sock 对象发送数据了。
需要注意的是,socket 对象是一个 Python 对象,不能被序列化,也不能在进程间传递。因此,如果需要在不同的进程中使用同一个 socket 对象,需要使用类似共享内存的机制来实现。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![dll](https://img-home.csdnimg.cn/images/20210720083646.png)
![md](https://img-home.csdnimg.cn/images/20210720083646.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![m](https://img-home.csdnimg.cn/images/20210720083646.png)
![sh](https://img-home.csdnimg.cn/images/20210720083646.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)