Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python-迭代各种导入_Python_Variables_Import_Iteration - Fatal编程技术网

python-迭代各种导入

python-迭代各种导入,python,variables,import,iteration,Python,Variables,Import,Iteration,如果我做了类似的事情 import my_import from my_import import * my_import.k = 6 for each x in [list of imports] x.k = 6 我可以通过如下操作更改导入中的变量 import my_import from my_import import * my_import.k = 6 for each x in [list of imports] x.k = 6 如果我想更改我使用的每个导

如果我做了类似的事情

import my_import
from my_import import *
my_import.k = 6
for each x in [list of imports]
    x.k = 6
我可以通过如下操作更改导入中的变量

import my_import
from my_import import *
my_import.k = 6
for each x in [list of imports]
    x.k = 6
如果我想更改我使用的每个导入的k值,是否有一种方法可以迭代所有导入并在每个导入中设置k值

基本上,我在寻找类似的东西

import my_import
from my_import import *
my_import.k = 6
for each x in [list of imports]
    x.k = 6

这是有原因的,但这是一个危险的游戏

import my_import1
import my_import2
import my_import3
import sys

# Check if you don't believe me
print(my_import1.x)
print(my_import2.x)
print(my_import3.x)

# Grab the interesection of all loaded modules and globals in this scope
allmodules = [sys.modules[name] for name in set(sys.modules)&set(globals())]

for module in allmodules:
    module.x = 10000

# Check if you don't believe me
print(my_import1.x)
print(my_import2.x)
print(my_import3.x)
输出:

1
2
3
10000
10000
10000

需要注意的是,它还将抓取“sys”并对其进行修改。也许可以在模块密钥名称中添加“内置”检查

有一些理由想要这样,但这是一场危险的游戏

import my_import1
import my_import2
import my_import3
import sys

# Check if you don't believe me
print(my_import1.x)
print(my_import2.x)
print(my_import3.x)

# Grab the interesection of all loaded modules and globals in this scope
allmodules = [sys.modules[name] for name in set(sys.modules)&set(globals())]

for module in allmodules:
    module.x = 10000

# Check if you don't believe me
print(my_import1.x)
print(my_import2.x)
print(my_import3.x)
输出:

1
2
3
10000
10000
10000

需要注意的是,它还将抓取“sys”并对其进行修改。也许可以在模块密钥名称中添加“内置”检查

有一些理由想要这样,但这是一场危险的游戏

import my_import1
import my_import2
import my_import3
import sys

# Check if you don't believe me
print(my_import1.x)
print(my_import2.x)
print(my_import3.x)

# Grab the interesection of all loaded modules and globals in this scope
allmodules = [sys.modules[name] for name in set(sys.modules)&set(globals())]

for module in allmodules:
    module.x = 10000

# Check if you don't believe me
print(my_import1.x)
print(my_import2.x)
print(my_import3.x)
输出:

1
2
3
10000
10000
10000

需要注意的是,它还将抓取“sys”并对其进行修改。也许可以在模块密钥名称中添加“内置”检查

有一些理由想要这样,但这是一场危险的游戏

import my_import1
import my_import2
import my_import3
import sys

# Check if you don't believe me
print(my_import1.x)
print(my_import2.x)
print(my_import3.x)

# Grab the interesection of all loaded modules and globals in this scope
allmodules = [sys.modules[name] for name in set(sys.modules)&set(globals())]

for module in allmodules:
    module.x = 10000

# Check if you don't believe me
print(my_import1.x)
print(my_import2.x)
print(my_import3.x)
输出:

1
2
3
10000
10000
10000

需要注意的是,它还将抓取“sys”并对其进行修改。也许可以在模块密钥名称中添加“内置”检查

如果您只想更改导入的模块对象的属性值,可以使用函数
\uuuuu import\uuuu()
map()
尝试此代码:

您可以通过逐个导入这些模块来检查结果,并输出k:

In [3]: import my_import1, my_import2, my_import3

In [4]: print my_import1.k
1000

In [5]: print my_import2.k
1000

In [6]: print my_import3.k
1000
实际上,您可以将map()函数更改为列表理解生成器,代码将非常类似于您要求的代码样式

#List Comprehension

In [7]: for module in [__import__(m) for m in moduleNames]:
   ...:     module.k = 2000
   ...:     

In [8]: print my_import1.k
2000

In [9]: print my_import2.k
2000

In [10]: print my_import3.k
2000

In [11]: 

#Generator

In [11]: for module in (__import__(m) for m in moduleNames):
   ....:     module.k = 3000
   ....:     

In [12]: print my_import1.k
3000

In [13]: print my_import2.k
3000

In [14]: print my_import3.k
3000

In [15]: 

顺便说一句,列表理解和生成器非常相似<当您需要处理大量模块且无需一次导入所有模块时,更推荐使用strong>生成器。它更高效且节省内存。

如果您只想更改导入的模块对象的属性值,可以使用函数
\uuuu import\uuuu()
map()

您可以通过逐个导入这些模块来检查结果,并输出k:

In [3]: import my_import1, my_import2, my_import3

In [4]: print my_import1.k
1000

In [5]: print my_import2.k
1000

In [6]: print my_import3.k
1000
实际上,您可以将map()函数更改为列表理解生成器,代码将非常类似于您要求的代码样式

#List Comprehension

In [7]: for module in [__import__(m) for m in moduleNames]:
   ...:     module.k = 2000
   ...:     

In [8]: print my_import1.k
2000

In [9]: print my_import2.k
2000

In [10]: print my_import3.k
2000

In [11]: 

#Generator

In [11]: for module in (__import__(m) for m in moduleNames):
   ....:     module.k = 3000
   ....:     

In [12]: print my_import1.k
3000

In [13]: print my_import2.k
3000

In [14]: print my_import3.k
3000

In [15]: 

顺便说一句,列表理解和生成器非常相似<当您需要处理大量模块且无需一次导入所有模块时,更推荐使用strong>生成器。它更高效且节省内存。

如果您只想更改导入的模块对象的属性值,可以使用函数
\uuuu import\uuuu()
map()

您可以通过逐个导入这些模块来检查结果,并输出k:

In [3]: import my_import1, my_import2, my_import3

In [4]: print my_import1.k
1000

In [5]: print my_import2.k
1000

In [6]: print my_import3.k
1000
实际上,您可以将map()函数更改为列表理解生成器,代码将非常类似于您要求的代码样式

#List Comprehension

In [7]: for module in [__import__(m) for m in moduleNames]:
   ...:     module.k = 2000
   ...:     

In [8]: print my_import1.k
2000

In [9]: print my_import2.k
2000

In [10]: print my_import3.k
2000

In [11]: 

#Generator

In [11]: for module in (__import__(m) for m in moduleNames):
   ....:     module.k = 3000
   ....:     

In [12]: print my_import1.k
3000

In [13]: print my_import2.k
3000

In [14]: print my_import3.k
3000

In [15]: 

顺便说一句,列表理解和生成器非常相似<当您需要处理大量模块且无需一次导入所有模块时,更推荐使用strong>生成器。它更高效且节省内存。

如果您只想更改导入的模块对象的属性值,可以使用函数
\uuuu import\uuuu()
map()

您可以通过逐个导入这些模块来检查结果,并输出k:

In [3]: import my_import1, my_import2, my_import3

In [4]: print my_import1.k
1000

In [5]: print my_import2.k
1000

In [6]: print my_import3.k
1000
实际上,您可以将map()函数更改为列表理解生成器,代码将非常类似于您要求的代码样式

#List Comprehension

In [7]: for module in [__import__(m) for m in moduleNames]:
   ...:     module.k = 2000
   ...:     

In [8]: print my_import1.k
2000

In [9]: print my_import2.k
2000

In [10]: print my_import3.k
2000

In [11]: 

#Generator

In [11]: for module in (__import__(m) for m in moduleNames):
   ....:     module.k = 3000
   ....:     

In [12]: print my_import1.k
3000

In [13]: print my_import2.k
3000

In [14]: print my_import3.k
3000

In [15]: 


顺便说一句,列表理解和生成器非常相似<当您需要处理大量模块且无需一次导入所有模块时,更推荐使用strong>生成器。它效率更高,节省内存。

为什么你认为你需要这样做?@jonrsharpe我正在尝试为学生的作业自动评分。大约有90个文件具有不可预测的名称,并且假定每个文件的顶部都有一个名为“k”的变量。虽然我一次只需要导入其中一个文件,但我觉得更可能的是会有迭代所有导入的功能,而不是以某种方式使用单个变量或其他东西来切换导入模块的名称。不过,我可能错了,在这种情况下,我很想知道如何做。更明智的做法是构造赋值,这样就不必注入这样的变量-为什么不,例如,将它作为某个
main
entry point函数的参数?@jornsharpe当我意识到这一点时,我不是做作业的人,我只是评分员。学生们被要求将k设置为某个值,但也被要求在文件的顶部使其易于更改,因此我们需要检查他们的函数是否可以使用不同的k值(最好不要手动更改每个值)。@jonrsharpe这是Harvey Mudd的教科书/实验练习的创作者:!给学生的唯一额外指示是使k可变,如果他们遵循实验室提供的规范,很可能会在他们编写的函数之外设置k-如果他们直接遵循实验室,他们可能只会在提交中硬编码数字“5”。CS学生简介:你认为你为什么需要这样做?@jornsharpe我正在尝试为学生的作业自动评分。大约有90个文件具有不可预测的名称,并且假定每个文件的顶部都有一个名为“k”的变量。虽然我一次只需要导入其中一个文件,