若在函数作用域中需要修改全局作用域或外层嵌套作用域中的变量,则需要使用global和nonlocal关键字。接下来,分别对关键字global和nonlocal的作用进行介绍。
1.global关键字global关键字用于在函数作用域中修改全局变量。假设现在有一个test函数,其外部定义了一个全局变量a,其内部对全局变量a进行重新赋值,示例代码如下:
a = 100def test(): a += 100 print(a)test()Traceback (most recent call last): File "<stdin>", line1, in <module> File "<stdin>", line2, in testUnboundLocalError:local variable 'a' referenced before assignment
上述程序报错,提示“在赋值前引用了局部变量a”。但是,前面我们明明是可以在函数中访问全局变量的呀?而这里为什么会出错呢?
这就是Python与其他语言的不同之处了。在Python中,如果在函数内部对全局变量a进行修改,Python会把变量a当作是局部变量,而在进行“a+=100”之前,我们是没有声明局部变量a的,因此,程序会出现上述错误提示。
要想在函数内修改全局变量,我们可以在函数内使用global关键字进行声明,下面,我们对程序进行修改,示例代码如下:
a = 100def test(): global a a += 100 print(a)test()200
这下,程序不但没有报错,而且成功对全局变量a进行了修改。
2.nonlocal关键字使用nonlocal关键字可以在函数作用域中修改嵌套作用域中的变量。下面,带大家看一个例子:
def func(): count = 1 def func_in(): count = 12 func_in() print(count)func()1
上述代码定义了一个嵌套函数,其中,func为外层函数,func_in为内层函数。func函数中定义了一个变量count,func_in函数中对变量count重新赋值,并在func函数中输出count变量的值。由执行结果可知,内层函数func_in并没有对外层函数func中的变量count进行修改。而是重新定义了一个同名的变量count。若要修改外层函数func中的变量count,则需要在变量前使用nonlocal关键字,改后的示例代码如下:
def func(): count = 1 def func_in(): nonlocal count count = 12 func_in() print(count)func()12
由执行结果可知,内层函数成功修改了变量的值。
注意:
使用global关键字修饰的变量之前可以不存在,而使用nonlocal关键字修饰的变量在嵌套作用域中必须已经存在。
世界经济论坛2019年年会将于1月22日至25日在瑞士达沃斯举行,预计将有来自全球110多个国家超过三千名政、商、学界及公民社会、文化艺术和媒体界的代表及专家和青年领袖出席。
A person passes by a World Economic Forum logo in Davos, Switzerland, Jan 20, 2019. [Photo/Agencies]
本届年会主题为“全球化4.0:打造第四次工业革命时代的全球架构(Globalization 4.0: Shaping a Global Architecture in the Age of the Fourth Industrial Revolution)”。
什么是“全球化4.0”?
世界经济论坛创始人兼执行主席施瓦布1月16日发表在美国《外交》杂志的一篇文章给出了详细的解释:
The Fourth Industrial Revolution is best described by its leading technologies: artificial intelligence, autonomous vehicles, and the Internet of Things. These are technologies that will affect many industries in the decades to come and accord unprecedented importance to the digital world. 第四次工业革命的最佳表述就是这些领先技术:人工智能、无人驾驶汽车,以及物联网。这些技术将在未来几十年影响多个行业,对数字世界有至关重要的影响。
In this world, globalization won’t disappear; it will deepen. If in the past global integration grew as trade barriers came down, it will now rely on the connectivity of national digital and virtual systems and the related flow of ideas and services. This is the core of Globalization 4.0. 当今世界,全球化不会消失,而是不断深入。如果说以往的全球融合是因为贸易壁垒的消失而发展,那么如今的全球化发展则有赖于国家间数字和虚拟系统的互联互通以及相关理念和服务的流通。这是全球化4.0的核心。
Klaus Schwab, Founder and Executive Chairman of the World Economic Forum addresses a news conference ahead of the Davos annual meeting in Cologny near Geneva, Switzerland, Jan 15, 2019. [Photo/Agencies]
施瓦布指出,
This fourth wave of globalization needs to be human-centered, inclusive and sustainable.
全球化4.0必须是以人为本、包容和可持续的。
他还表示,在应对全球化4.0的挑战时,我们要遵循三个重要原则:
First, the dialogues that take place to shape Globalization 4.0 must involve all the relevant global players. 第一,构建全球化4.0的对话必须让全球有关各方参与。
Second, the preservation of social and national cohesion should be placed front and center. 第二,维护社会及民族凝聚力应该放在首要地位。
Third, coordination—achieving shared objectives—will yield more successes than cooperation—acting out a common strategy. 第三,协同(达成共同目标)会比合作(执行同一战略)取得更多成果。
本届达沃斯年会将以“全球化4.0”为主题举行一系列“全球对话”,重点关注以下相互关联的领域:
A worker adjusts a lamp in the congress center ahead of the annual meeting of the World Economic Forum in Davos, Switzerland, Jan 20, 2019. [Photo/Agencies]
“地缘政治和观念多元化的世界”全球对话(a global dialogue on the geopolitics and a “multiconceptual” world):了解国际关系中正在发生的重大变化,并就如何推动未来合作进行坦诚和建设性的讨论;同时举行“和平与和解”全球对话(a global dialogue on peace and reconciliation):推动多方利益相关者为解决世界主要薄弱环节的外交努力提供大规模支持,特别是正值战略地缘政治转变有可能导致权力真空和/或单边主义不断抬头之际。
“经济的未来”全球对话(a global dialogue on the future of the economy):回顾经济和社会决策原则(review principles for economic and social decision-),这些原则需要重新制定,以更好地反映第四次工业革命中固有的结构性变化;同时举行“金融和货币体系”全球对话(a global dialogue on financial and monetary systems):利用加密货币和区块链等新技术共同塑造货币和金融体系(jointly shape our monetary and financial systems by leveraging new technologies, such as cryptocurrencies and blockchain),并且使这些体系更具弹性,从而实现可持续增长和长期社会福祉。
“工业系统”全球对话(a global dialogue on industry systems):预测第四次工业革命如何提供机会,大幅改善卫生、能源、通信、交通等领域的服务;同时举行“技术政策”全球对话(a global dialogue on technology policy):就人工智能和基因编辑等创新和新兴技术确定原则,并确保这些技术以必要的道德原则和基于价值观的框架为依托。
“网络安全”全球对话(a global dialogue on cybersecurity):确保第四次工业革命的数字创新和技术支柱安全可靠;同时举行“风险复原力”全球对话(a global dialogue on risk resilience):促进系统性思考,从根本上改善我们对关键环境系统(气候、海洋和生物圈)的综合管理,这些系统是我们的社会和经济赖以生存的基础。
“人力资本”全球对话(a global dialogue on human capital):工作的概念正在发生巨变,需要对其进行重新审视,还要反思工作的未来和人力资本的相关性;同时举行“新社会愿景”全球对话(a global dialogue on a new societal narrative):塑造新的社会愿景,从迷恋消费和物质主义转变为关注理想和人文主义。
“制度改革”全球对话(a global dialogue on institutional reform):反思上世纪出现的全球制度框架,并对其进行调整,确保适应21世纪今后几十年的新政治、经济和社会环境;同时举行“经济合作”全球对话(a global dialogue on economic cooperation):建立一个新的规则和制度框架,整合全球经济合作的方方面面,包括知识产权、人员流动、竞争政策、数据保护、汇率、财政政策、国有企业和国家安全。
在本届年会350多场论坛对话环节中,“中国主题”颇为显眼。其中包括:
22日举行的“推进‘一带一路’倡议:展望中国的万亿美元愿景(Advancing the Belt and Road Initiative: China’s Trillion-Dollar Vision)”;
24日的“中国经济展望(China Economic Outlook)”和“全球化4.0:中国如何塑造全球商业的未来(Globalization 4.0: China's Role in the Future of Global Commerce)”等。
中国国家副主席将出席本届达沃斯世界经济论坛年会并应邀发表致辞。
参考来源:达沃斯官网
(中国日报网英语点津 Helen)
来源:中国日报网