python中环境变量的混淆

2024-10-01 19:24:22 发布

您现在位置:Python中文网/ 问答频道 /正文

在麻省理工学院6.006“算法简介”课程的一段示例代码中,我很难理解环境变量的用法。你知道吗

我刚刚完成了习题集3,在查看解决方案(找到here)时,代码使用这种语法来更改变量名:

if sys.version_info >= (3,):
    xrange = range

这非常有意义,因为在python3中,range==xrange

但是,在解决方案块的后面,它们最终会定义不同的类来覆盖现有的类。这里的细节并不太重要,但基本上当它们这样做时,它们会放入一个“if”语句来将一个类实现更改为另一个类实现。例如,它们创建一个基于数组的范围索引“BlitRangeIndex”来覆盖“RangeIndex”:

if os.environ.get('INDEX') == 'blit':
  RangeIndex = BlitRangeIndex

然而,我不明白“指数”这个变量是怎么被放入环境变量的。代码中没有任何迹象表明发生过这种情况,因此我不明白“if”语句是如何计算为true的。你知道吗

任何洞察力都太好了!我仍然在学习python的很多内部工作原理,但我似乎无法理解这一点。你知道吗


Tags: 代码算法示例用法ifhere环境变量range
1条回答
网友
1楼 · 发布于 2024-10-01 19:24:22

它只是假设您在运行程序之前设置了环境变量。 例如,在Linux环境中,您可以执行以下操作:

$ export INDEX=value 
$ export CROSS=value 
$ export TRACE=value
$ python path/to/full_circuit2.py 

但是,如果愿意,可以通过常量覆盖这些VAIAVIS,如下所示:

#!/usr/bin/env python

INDEX='value'
CROSS='value' 
TRACE='value'

...

您甚至可以通过命令行参数传递值:

#!/usr/bin/env python

import sys  
# other imports... 

INDEX = sys.argv[1]
CROSS = sys.argv[2]
TRACE = sys.argv[3]

...

if INDEX == 'blit': # instead if os.environ.get('INDEX')
  RangeIndex = BlitRangeIndex

...

相关问题 更多 >

    热门问题