相关疑难解决方法(0)

"=="和"是"之间有区别吗?

我的Google-fu让我失望了.

在Python中,以下两个相等的测试是否等效?

n = 5
# Test one.
if n == 5:
    print 'Yay!'

# Test two.
if n is 5:
    print 'Yay!'
Run Code Online (Sandbox Code Playgroud)

对于您要比较实例的对象(list比如说),这是否适用?

好的,所以这样的答案我的问题:

L = []
L.append(1)
if L == [1]:
    print 'Yay!'
# Holds true, but...

if L is [1]:
    print 'Yay!'
# Doesn't.
Run Code Online (Sandbox Code Playgroud)

所以==测试值测试的地方is是否是同一个对象?

python equality reference semantics

630
推荐指数
11
解决办法
33万
查看次数

"是无"和"==无"之间的区别是什么?

我最近遇到了这种语法,我不知道它的区别.

如果有人能告诉我差异,我将不胜感激.

python jython

289
推荐指数
5
解决办法
14万
查看次数

是否需要"使用严格"的Python编译器?

存在用于Python的静态分析工具,但编译时间检查往往与Python所包含的运行时绑定哲学截然相反.这可能与一个静态分析工具来执行一些"包装标准Python解释器使用严格 "般的约束,但我们没有看到任何广泛采用的这样的事情.

有没有关于Python的东西会使"使用严格"的行为变得不必要或特别不受欢迎?

或者,Perl中的"使用严格"行为是否已被广泛采用?

注意:"必要"是指"实际必要",并非绝对必要.显然你可以在没有"use strict"的情况下编写Perl,但是(从我所见过的)大多数Perl程序员都会使用它.

注意:Python解释器包装器不需要 "使用严格"类似的约束 - 您可以使用类似于"use strict"的伪编译指示,这将被普通解释器忽略.我不是在谈论添加语言级功能.


更新:解释Perl每条评论中"use strict"的作用.(官方文档链接在第一段.)

"use strict"指令有三个不同的组件,其中只有两个非常有趣:

  • use strict vars:在程序中静态检查词法范围的变量用法.(请记住,在Python中,基本上只有global范围和local范围).许多Python短信检查这种事情.因为它是他们可以做的唯一的静态分析,所以直言不讳地假设你使用简单的词汇范围,并在你告诉他们闭嘴之前警告你那些看似错误的东西; 即

    FOO = 12
    foo += 3
    
    Run Code Online (Sandbox Code Playgroud)

    如果您没有对命名空间做任何想法,那么检查拼写错误就很有用.

  • use strict refs:防止符号命名空间解除引用.Python最接近的模拟是使用locals()globals()进行符号绑定和标识符查找.

  • use strict subs:在Python中没有真正的模拟.

python compiler-construction perl static-analysis use-strict

30
推荐指数
6
解决办法
1万
查看次数

为什么CPython中的id({})== id({})和id([])== id([])?

为什么CPython(没有关于其他Python实现的线索)有以下行为?

tuple1 = ()
tuple2 = ()                                                                                                   
dict1 = {}
dict2 = {}
list1 = []
list2 = []
# makes sense, tuples are immutable
assert(id(tuple1) == id(tuple2))
# also makes sense dicts are mutable
assert(id(dict1) != id(dict2))
# lists are mutable too
assert(id(list1) != id(list2))
assert(id(()) == id(()))
# why no assertion error on this?
assert(id({}) == id({}))
# or this?
assert(id([]) == id([]))
Run Code Online (Sandbox Code Playgroud)

我有一些想法可能,但找不到具体原因.

编辑

进一步证明格伦和托马斯的观点:

[1] id([])
4330909912
[2] x = []
[3] …
Run Code Online (Sandbox Code Playgroud)

python identity cpython python-internals

26
推荐指数
2
解决办法
1787
查看次数

python中'not x'和'x == None'之间的区别

可以not xx==None给出不同的答案,如果x是一个类的实例?

我的意思是如何not x评估是否x是一个类实例?

python

9
推荐指数
2
解决办法
1819
查看次数

'是'和'=='之间的区别

可能重复:
"foo is None"和"foo == None"之间有什么区别吗?

真的很简单的问题.

是什么区别:

if a.b is 'something':
Run Code Online (Sandbox Code Playgroud)

if a.b == 'something':
Run Code Online (Sandbox Code Playgroud)

请原谅我的无知

python

6
推荐指数
1
解决办法
170
查看次数

python中的"is not None"是什么意思?

这两个蟒蛇成语有什么区别?

if data is not None: return data

if data: return data

python-2.7

3
推荐指数
1
解决办法
2013
查看次数

"是"不在python IDE中工作,而是在命令行中工作

我无法理解为什么会发生这种情况..

看看这个python代码:

    word = raw_input("Enter Word")
    length = len(word)

    if word[length-1:] is "e" :
         print word + "d"
Run Code Online (Sandbox Code Playgroud)

如果我输入"爱",它的输出必须"被爱".所以,当我在PyScripter IDE中编写它时,它既不显示错误也不显示输出.但我在python shell中尝试了相同的代码,它的工作原理!

我想知道为什么会这样.

python

2
推荐指数
2
解决办法
163
查看次数