append - 函数中使用的全局变量是否需要在 def 块之前定义?
问题描述
我必须承认我没想到下面的代码可以工作(我的同事的代码示例):
def foo():
li.append(3)
li = [1, 2]
foo()
print(li) # gives [1, 2, 3]
我的问题是:
- 为什么'def foo()'中不需要'global li'?
- 为什么'li = [1, 2]'不需要放在'def foo()'之前?
附言。Python 3.6.1 用于列出的代码示例。
解决方案
- 由于列表是在调用 foo() 之前定义的,因此没有错误。
global
仅当我们要进行赋值或更改全局变量时才需要关键字。访问方法或打印变量不需要global
关键字
推荐阅读
- apache-kafka - 我们可以在 kafka hdfs connect 中指定主题的模式吗?
- ios - 从后台获取调用时,Alamofire 不工作
- java - 格式化 XML FileContent 时内容更改
- php - 无法加载您的默认控制器。请确保您的 Routes.php 文件中指定的控制器有效
- wpf - 如何为数据网格组合框的 selectionchanged 设置事件?
- react-native - 如何更改反应导航中抽屉内的标题名称?
- mysql - 远程数据库正在连接
- c - 做... while(0) 定义块并支持类型转换
- docker - Docker 镜像上的多个版本
- android - 将活动或片段传递给静态方法是否错误