Python 如何使用sys.argv中项目文件中声明的字符串?

Python 如何使用sys.argv中项目文件中声明的字符串?,python,python-3.x,Python,Python 3.x,假设我在test.py中有此代码: import sys a = 'alfa' b = 'beta' c = 'gamma' d = 'delta' print(sys.argv[1]) 运行python test.py a将返回a。如何让它返回alfa?使用映射到这些字符串的字典: mapping = {'a': 'alfa', 'd': 'delta', 'b': 'beta', 'c': 'gamma'} 然后,当您获得sys.argv[1]时,只需从字典中访问以下值: print(m

假设我在
test.py
中有此代码:

import sys
a = 'alfa'
b = 'beta'
c = 'gamma'
d = 'delta'
print(sys.argv[1])

运行
python test.py a
将返回
a
。如何让它返回
alfa

使用映射到这些字符串的字典:

mapping = {'a': 'alfa', 'd': 'delta', 'b': 'beta', 'c': 'gamma'}
然后,当您获得
sys.argv[1]
时,只需从字典中访问以下值:

print(mapping.get(sys.argv[1]))
演示:

文件:
so_question.py

import sys

mapping = {'a': 'alfa', 'd': 'delta', 'b': 'beta', 'c': 'gamma'}
user_var = sys.argv[1]

user_var_value = mapping.get(user_var)

print("user_var_value is: {}".format(user_var_value))
在壳中:

▶ python so_question.py a
user_var_value is: alfa

使用映射到这些字符串的字典:

mapping = {'a': 'alfa', 'd': 'delta', 'b': 'beta', 'c': 'gamma'}
然后,当您获得
sys.argv[1]
时,只需从字典中访问以下值:

print(mapping.get(sys.argv[1]))
演示:

文件:
so_question.py

import sys

mapping = {'a': 'alfa', 'd': 'delta', 'b': 'beta', 'c': 'gamma'}
user_var = sys.argv[1]

user_var_value = mapping.get(user_var)

print("user_var_value is: {}".format(user_var_value))
在壳中:

▶ python so_question.py a
user_var_value is: alfa

您还可以使用
全局
局部

import sys


a = 'alfa'
b = 'beta'
c = 'gamma'
d = 'delta'

print(globals().get(sys.argv[1]))
# or 
print(locals().get(sys.argv[1]))

您还可以使用
全局
局部

import sys


a = 'alfa'
b = 'beta'
c = 'gamma'
d = 'delta'

print(globals().get(sys.argv[1]))
# or 
print(locals().get(sys.argv[1]))

虽然这是正确的,但不应使用,另一个答案的映射方法要好得多。@try catch finally,介意详细说明原因吗?因为它教会初学者继续声明全局变量并通过这些方法引用它们,这是一种糟糕的做法。(有20个希腊字母可用,下一个问题是如何以编程方式在函数中导入全局变量,这个问题很快就会出现)。除此之外,这种方法可能允许传递任何名称来访问任何全局变量,如果没有正确检查,这可能是一个安全问题。虽然这是正确的,但不应该使用它,但另一个答案的映射方法要好得多。@try catch finally,想详细说明原因吗?因为它教会初学者继续声明全局变量并通过这些方法引用它们,这是一种糟糕的做法。(有20个希腊字母可用,下一个问题是如何以编程方式在函数中导入全局变量,这个问题很快就会出现)。除此之外,这种方法可能允许传递任何名称来访问任何全局变量,如果没有正确检查,这可能是一个安全问题。