python - 全局关键字未反映
问题描述
我试图通过调用 via.. 来打印一些命令,函数:下面是我的代码:
import re
new_acl_statement = ""
cisco_commands = [
"ip access-list resequence vlan19_in 10 10",
"ip access-list extended vlan19_in",
new_acl_statement, =====> # this is variable
"exit",
"ip access-list resequence vlan19_in 10 10",
"end"]
def check_acl_config():
output = "90 permit ip host 1.1.1.1 host 2.2.2.2"
if "2.2.2.2" in output:
strip_output = re.split('\d+', output, 1)
acl_statement = strip_output[1]
seq_num = re.findall('[0-9]+', output)
acl_seq_num = seq_num[0]
int_acl_seq_num = int(acl_seq_num)
int_acl_seq_num += 1
str_int_acl_seq_num = str(int_acl_seq_num)
global new_acl_statement ==========> # global keyword defined
new_acl_statement = str_int_acl_seq_num + acl_statement
return cisco_commands
else:
return "nothing"
send_command = check_acl_config()
print(send_command)
执行上述代码后,我的输出如下:
['ip access-list resequence vlan19_in 10 10', 'ip access-list extended vlan19_in', '', 'exit', 'ip access-list resequence vlan19_in 10 10', 'end']
从输出中您可以看到,它只是打印出来自变量“cisco_commands”的语句。我在“if”函数中有一些逻辑并且那个没有执行?我为变量“new_acl_statement”定义了全局关键字,为什么它没有反映在我的输出中?
预期输出:
['ip access-list resequence vlan19_in 10 10', 'ip access-list extended vlan19_in', '91 permit ip host 1.1.1.1 host 2.2.2.2', 'exit', 'ip access-list resequence vlan19_in 10 10', 'end']
有人可以指导我哪里出错了吗?
谢谢和问候, 马杜
解决方案
这里的问题是cisco_commands
在分配之前定义的new_acl_statement
。即使当您定义新值时,它也不会在cisco_commands
. 更新cisco_commands
新值后最好更新。
推荐阅读
- jenkins-pipeline - Jenkins 示例管道作业每次都失败
- c - 尝试在 C 中实现 Luhn 算法
- node.js - 通过按下按钮/从网站调用功能来调用/执行“UIVERI 5”
- angular - AngularnVMWare清晰的vcenter搜索组件——源在哪里?
- javascript - 未捕获的类型错误:无法读取反应组件上未定义的属性“包含”
- javascript - 使用 JQuery 将选择移动到 html 中的下一个列表项
- php - session.name 不能为数字或空
- google-apps-script - 错误:未授予访问权限或已过期。通过服务帐户和域范围的委派访问 Google Admin Directory API 时
- java - 如何将一个 docx 插入另一个 docx 的预定行
- node.js - 运行连接到 MongoDB 云集群的 nodejs 应用程序时,Docker-compose 给出:“node|SyntaxError: Unexpected token import”错误