python - #include 在 Python 中,但实际上只包含
问题描述
我想问:有没有(在Python中)任何方式,如何绝对愚蠢地将其他文件包含到源代码中?没有像模块等这样的舞蹈,即来自C的等效#include?对此有很多问题,但所有问题都在打开导入模块。不,我只想将任何文件中的一些文本行插入到我的代码中,而不对其进行预处理。
例如:
让我们归档mysum.py
c = a + b # there is just this one line
我想包含到另一个源代码:文件experiment.py:
#!/usr/bin/python
# -*- coding: UTF8 -*-
import importlib
import sys
import math
a = 1
b = 2
import **mysum**
print c
好吧,它不起作用,
Traceback (most recent call last):
File "./experiment.py", line 12, in <module>
import mysum
File "/home/rna/unix/mypok/mysum.py", line 5, in <module>
c = a + b
NameError: name 'a' is not defined
我真的需要一个简短的头文件来包含更多不同的脚本,会有关于 MySQL 连接和类似数据的定义变量,对于更多脚本来说很常见。
解决方案
当你导入一个模块时,导入模块的全局范围内的任何东西都会被执行,这包括语句、变量定义、类定义等。
例如,如果我要修改您的mysum.py
a = 1
b = 4
def some_func(a,b):
return a+b
然后在另一个脚本中运行
import mysum
所有这些语句都将被执行。我可以访问mysum.a
,mysum.b
和mysum.some_func
因为它们是在导入时执行的。你的c = a+b
行为完全一样
现在让我们检查一下您拥有的脚本:
c = a+b
即使您正在导入它,也务必将其视为独立脚本,这一点很重要。在该脚本的整个范围内没有 a
或未定义任何变量,因此当您导入时,将对其进行评估,而这些变量均未定义。b
c=a+b
我不确定你想要做什么的确切用例,但如果你想要一些函数来添加两个变量,我会这样做:
#mysum.py
def some_add(a,b):
return a+b
#other_module.py
import mysum
a = 2
b = 3
c = mysum.some_add(a,b)
你会注意到我没有使用全局风格的a
和b
like
def some_add():
return a+b
因为这又需要 a 和 b 在该模块的全局范围内,您将再次得到NameErrors
推荐阅读
- javascript - event.preventDefault 不适用于 CMD+R 刷新
- sql - SQL 查询 - 在同一时间从其他表中查找值并获取数据
- dns - 我的 ISP DNS 服务器如何联系根 DNS 服务器?
- python - 在 Python 中为 pandas 对象添加月份
- php - 使用两个数组参数更新数据库
- linux - rsyslog 发送 IP 地址而不是主机名
- r - 更改堆叠顺序 ggplot - geom_bar
- javascript - npm install robotjs 在构建二进制文件时失败
- reactjs - 我在反应中遇到了 Cookie 的这个导出错误
- javascript - Android:从未收到 BLE Gatt 通知