相关疑难解决方法(0)

如何检查NaN值?

float('nan')结果是南(不是数字).但我该如何检查呢?应该很容易,但我找不到它.

python math

862
推荐指数
13
解决办法
114万
查看次数

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

我的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中使用hashable是什么意思?

我试过搜索互联网,但找不到哈希的含义.

当他们说对象是什么hashablehashable objects它是什么意思?

python

163
推荐指数
6
解决办法
11万
查看次数

为什么(0-6)是-6 =假?

可能重复:
Python"is"运算符使用整数意外运行

今天我试着调试我的项目,经过几个小时的分析,我得到了这个:

>>> (0-6) is -6
False
Run Code Online (Sandbox Code Playgroud)

但,

>>> (0-5) is -5
True
Run Code Online (Sandbox Code Playgroud)

你能解释一下,为什么?也许这是某种错误或非常奇怪的行为.

> Python 2.7.3 (default, Apr 24 2012, 00:00:54) [GCC 4.7.0 20120414 (prerelease)] on linux2
>>> type(0-6) 
<type 'int'>
>>> type(-6) 
<type 'int'>
>>> type((0-6) is -6)
<type 'bool'>
>>> 
Run Code Online (Sandbox Code Playgroud)

python debugging integer cpython

129
推荐指数
4
解决办法
4897
查看次数

id()函数用于什么?

我阅读了Python 2文档并注意到了这个id()函数:

返回对象的"标识".这是一个整数(或长整数),保证在该生命周期内该对象是唯一且恒定的.具有非重叠生存期的两个对象可以具有相同的id()值.

CPython实现细节:这是内存中对象的地址.

所以,我通过使用id()列表进行了实验:

>>> list = [1,2,3]
>>> id(list[0])
31186196
>>> id(list[1])
31907092 // increased by 896
>>> id(list[2])
31907080 // decreased by 12
Run Code Online (Sandbox Code Playgroud)

函数返回的整数是多少?它是C中内存地址的同义词吗?如果是这样,为什么整数不对应于数据类型的大小?

何时id()在实践中使用?

python

93
推荐指数
6
解决办法
9万
查看次数

Python中的Integer Cache有什么用?

深入研究Python的源代码后,我发现它维护了一个PyInt_Objects 数组,范围从int(-5)到int(256)(@src/Objects/intobject.c)

一个小实验证明了这一点:

>>> a = 1
>>> b = 1
>>> a is b
True
>>> a = 257
>>> b = 257
>>> a is b
False
Run Code Online (Sandbox Code Playgroud)

但是如果我在py文件中一起运行这些代码(或者用分号连接它们),结果会有所不同:

>>> a = 257; b = 257; a is b
True
Run Code Online (Sandbox Code Playgroud)

我很好奇为什么它们仍然是同一个对象,所以我深入研究语法树和编译器,我想出了一个下面列出的调用层次结构:

PyRun_FileExFlags() 
    mod = PyParser_ASTFromFile() 
        node *n = PyParser_ParseFileFlagsEx() //source to cst
            parsetoke() 
                ps = PyParser_New() 
                for (;;)
                    PyTokenizer_Get() 
                    PyParser_AddToken(ps, ...)
        mod = PyAST_FromNode(n, ...)  //cst to ast
    run_mod(mod, ...)
        co = PyAST_Compile(mod, ...) //ast to CFG …
Run Code Online (Sandbox Code Playgroud)

python caching code-analysis literals python-internals

74
推荐指数
1
解决办法
6755
查看次数

如何在python中打印变量名?

假设我有一个名为choice它的变量等于2.我如何访问变量的名称?相当于的东西

In [53]: namestr(choice)
Out[53]: 'choice'
Run Code Online (Sandbox Code Playgroud)

用于制作字典.有一个很好的方法来做到这一点,我只是错过了它.

编辑:

因此,这样做的原因.我正在运行一些数据分析的东西,我在程序中调用了多个参数,我想在运行时调整或不调整.我读了我在上一次运行中使用的参数,从.config文件格式化为

filename
no_sig_resonance.dat

mass_peak
700

choice
1,2,3
Run Code Online (Sandbox Code Playgroud)

当提示输入值时,将显示先前使用的值,空字符串输入将使用先前使用的值.

我的问题是因为在写字典时已经扫描了这些值.如果需要一个参数,我运行get_param访问文件并找到参数.

我想我会通过阅读来避免这个问题.config提交一次并从中生成字典.我原本避免了这个......我不再记得的原因.更新我的代码的完美情况!

python variables dictionary introspection

64
推荐指数
6
解决办法
12万
查看次数

将变量名称转换为字符串?

我想将python变量名转换为等效的字符串,如图所示.有什么想法?

var = {}
print ???  # Would like to see 'var'
something_else = 3
print ???  # Would print 'something_else'
Run Code Online (Sandbox Code Playgroud)

python string variables

57
推荐指数
6
解决办法
7万
查看次数

在Python中获取生成器的第n项

是否有更复杂的语法写作方式?

gen = (i for i in xrange(10))
index = 5
for i, v in enumerate(gen):
    if i is index:
        return v
Run Code Online (Sandbox Code Playgroud)

生成器应该有一个gen[index]表达式,作为一个列表,但在功能上与上面的代码完全相同似乎是很自然的.

python generator

56
推荐指数
4
解决办法
3万
查看次数

当字符串中有点时,为什么"is"关键字具有不同的行为?

考虑以下代码:

>>> x = "google"
>>> x is "google"
True
>>> x = "google.com"
>>> x is "google.com"
False
>>>
Run Code Online (Sandbox Code Playgroud)

为什么会那样?

为了确保上述内容正确,我刚刚在Linux上测试了Python 2.5.4,2.6.5,2.7b2,Python 3.1和Linux上的Python 2.7b1.

看起来所有这些都是一致的,所以它是设计的.我错过了什么吗?

我发现,我的一些个人域名过滤脚本失败了.

python identity equality

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