将所有项目从切片(src)复制到新切片(dst)后,dst中的所有项目都指向src的最后一项.
package main
import (
"fmt"
)
func main() {
src := []string{"a", "b", "c"}
dst := []*string{}
for _, val := range src {
dst = append(dst, &val)
}
for i, s := range dst {
fmt.Printf("%v - %v\n", i, *s)
}
}
>>> 0 - c
>>> 1 - c
>>> 2 - c
Run Code Online (Sandbox Code Playgroud)
为什么不将"a"和"b"复制到dst切片中?
我有以下模块:
main.py
import my_import
my_import.a_func()
Run Code Online (Sandbox Code Playgroud)
my_import.py
FOO = "foo"
BAR = []
def a_func():
BAR.append("bar") #ok
FOO = FOO + "foo" #UnboundLocalError:
#local variable 'FOO' referenced before assignment
Run Code Online (Sandbox Code Playgroud)
这可能是由于进口,但如何?
[编辑]
从我得到的答案不是导入是crulpit,但后续仍然是奇怪的:
FOO = "foo"
BAR = []
def a_func():
BAR.append("bar")
print(FOO)
a_func()
Run Code Online (Sandbox Code Playgroud)
- >打印"foo"
FOO = "foo"
BAR = []
def a_func():
BAR.append("bar")
print(FOO)
FOO = FOO + "foo"
a_func()
Run Code Online (Sandbox Code Playgroud)
- >失败,"UnboundLocalError:赋值前引用的局部变量'FOO'"并且不打印"foo"
看起来解释器在实际运行代码之前正在查找当前作用域中的赋值.
任何人都可以告诉我为什么以下失败:
teststr = "foo"
if not teststr.isdigit() and int(teststr) != 1:
pass
Run Code Online (Sandbox Code Playgroud)
有:
ValueError: invalid literal for int() with base 10: 'foo'
Run Code Online (Sandbox Code Playgroud)
在C中,如果&&
测试中的第一部分失败,则不再评估右侧.这在Python中是不同的吗?
编辑:我是傻瓜.本and
应是or
当然的.....
我尝试构建一个except
子句来捕获除 [原文如此] 特定类型异常之外的所有内容:
try:
try:
asdjaslk
except not NameError as ne: #I want this block to catch everything except NameError
print("!NameError- {0}: {1}".format(ne.__class__, ne))
except Exception as e: #NameError is the only one that should get here
print("Exception- {0}: {1}".format(e.__class__, e))
Run Code Online (Sandbox Code Playgroud)
语言接受not
中except
条款,但什么都不做吧:
>>> Exception- <type 'exceptions.NameError'>: name 'asdjaslk' is not defined
Run Code Online (Sandbox Code Playgroud)
是否有可能做到这一点,或者我应该重新做raise
他们?
我有一个 Django 应用程序,它检查数据库中是否包含与用户在表单中输入的数字相匹配的数字。如果它们匹配,我已经设法让它重定向到“你赢了”页面,但是当它们不匹配时,它只会给出一个错误,提示“匹配查询不存在”。这是我在 view.py 文件中使用的 if/else 语句:
if Numbers.objects.get(numbers_win = user_number):
return HttpResponseRedirect('win')
else:
return HttpResponseRedirect('lose.html')
Run Code Online (Sandbox Code Playgroud)