首先,我理解我可以使用globalstatement来访问全局变量.但不知何故,我能够修改一个全局列表,global如下所示:
def func1(nums):
nums = [4,5,6]
nums = [1,2,3]
func1(nums)
print nums # print [1,2,3]
def func2(nums):
nums[0] = 4
nums[1] = 5
nums[2] = 6
nums = [1,2,3]
func2(nums)
print nums # print [4,5,6]
Run Code Online (Sandbox Code Playgroud)
在尝试了func2之后,我意识到如果我指定索引,我总是可以访问函数中的全局列表:
def func3(nums):
nums[:] = [4,5,6]
nums = [1,2,3]
func3(nums)
print nums # print [4,5,6]
Run Code Online (Sandbox Code Playgroud)
是因为如果在定义之前使用函数变量,Python会自动尝试匹配全局变量吗?
谢谢.
我argparse用来解析命令行参数,默认情况下,在接收到无效参数时,它会打印帮助消息并退出。当argparse收到无效参数时,是否可以自定义行为?
通常,我想捕获所有无效的参数并对其进行处理。我正在寻找类似的东西:
parser = argparse.ArgumentParser()
# add some arguments here
try:
parser.parse_args()
except InvalidArgvsError, iae:
print "handle this invalid argument '{arg}' my way!".format(arg=iae.get_arg())
Run Code Online (Sandbox Code Playgroud)
这样我就可以:
>> python example.py --invalid some_text
handle this invalid argument 'invalid' my way!
Run Code Online (Sandbox Code Playgroud)