我刚刚开始自学Python,此脚本需要一些帮助:
old_string = "didnt work"
new_string = "worked"
def function():
exec("old_string = new_string")
print(old_string)
function()
我想得到它old_string = "worked"
。
你快到了。您正在尝试修改全局变量,因此必须添加以下global
语句:
old_string = "didn't work"
new_string = "worked"
def function():
exec("global old_string; old_string = new_string")
print(old_string)
function()
如果运行以下版本,则会看到您的版本中发生了什么:
old_string = "didn't work"
new_string = "worked"
def function():
_locals = locals()
exec("old_string = new_string", globals(), _locals)
print(old_string)
print(_locals)
function()
输出:
didn't work
{'old_string': 'worked'}
运行它的方法,最终尝试在中修改函数的局部变量exec
,这基本上是未定义的行为。请参阅exec
文档中的警告:
注意: 默认 本地语言的 行为如以下功能
locals()
所述:不应尝试对默认 本地 字典进行修改。如果需要在函数返回后查看代码对
本地人的 影响,请传递一个明确的 本地人 字典。 __exec()
以及以下相关警告locals()
:
注意: 此字典的内容不得修改;更改可能不会影响解释器使用的局部变量和自由变量的值。
首先我想问一下这是不是可能的,设置值为全局变量在异步函数或承诺? 如果是,那么为什么每个可用的教程/网站都在教程中使用console.log(结果),但从来没有使用它将其赋值给variable。 例如:
问题内容: 我正在尝试设置一个环境变量,然后将其读回以验证它是否确实被设置。 我有以下内容: 但是,它看起来总是空的,这意味着它可能设置不正确。 我的exec命令正确吗?javadocs声明它可以将字符串参数作为命令。 有任何想法吗? 问题答案: 这行不通。当您开始一个新过程时,该过程将收到环境 的副本 。然后,它对环境变量所做的任何更改都将在该副本中进行,并且在任何时候都不会对调用方可见。 您实
问题内容: 我对JavaScript比较陌生,我想我知道回调函数的工作原理,但是在搜索Web几个小时后,我仍然不明白为什么我的代码不起作用。 我正在提出一个AJAX请求,该请求返回一个字符串数组。我正在尝试将此数组设置为局部变量,但是一旦执行回调函数,它似乎就失去了它的值。 在控制台中,显示为未定义。谁能向我解释为什么未设置此参数,以及如何在回调函数中设置局部变量。 问题答案: 这里的问题是aja
问题内容: 我究竟做错了什么?为什么$ path在函数外部正确打印,但是在函数内部无法访问? 问题答案: 因为它没有在函数中定义。 有几种方法可以解决此问题: 1)使用亚历克斯所说的话,告诉函数它是一个全局变量: 2)将其定义为常量: 3)如果特定于该函数,则将其传递给该函数: 根据功能的实际工作原理,其中之一会起作用。
问题内容: 我正在使用函数,这样我的程序就不会一团糟,但我不知道如何将局部变量变成全局变量。 问题答案: 这是两种实现相同目的的方法: 使用参数并返回(推荐) 运行时,将获得以下输出 使用全局变量(永远不要这样做) 现在您将获得:
问题内容: 我需要在查询之前设置search_path。新的搜索路径应基于功能参数。我该怎么做?现在我有: 但它根本不会接受1美元。我也尝试了quote_ident($ 1),但是没有用。 谢谢! 问题答案: 我使用set_config()创建了一个纯SQL函数。 该解决方案支持在以逗号分隔的字符串中设置多个架构。默认情况下,更改适用于当前会话。将“ is_local”参数设置为true可使更改仅