相关疑难解决方法(0)

Python:如何检查对象是否为datetime.date类型?

我尝试了一些明显的选项,但没有一个可行:

In [150]: x
Out[150]: datetime.date(2012, 9, 1)

In [151]: type(x)
Out[151]: datetime.date

In [152]: isinstance(x, datetime.date)
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-152-9a298ea6fce5> in <module>()
----> 1 isinstance(x, datetime.date)

TypeError: isinstance() arg 2 must be a class, type, or tuple of classes and types

In [153]: x is datetime.date
Out[153]: False

In [154]: type(x) is datetime.date
Out[154]: False
Run Code Online (Sandbox Code Playgroud)

这样做的正确方法是什么?

python datetime

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

在Python中,两个对象何时相同?

似乎2 is 2并且3 is 3在python中总是如此,并且通常,对整数的任何引用都与对同一整数的任何其他引用相同.同样的情况,以None(即None is None).我知道,这并没有发生在用户定义的类型或可变类型.但它有时也会在不可变类型上失败:

>>> () is ()
True
>>> (2,) is (2,)
False
Run Code Online (Sandbox Code Playgroud)

也就是说:空元组的两个独立构造产生对内存中相同对象的引用,但是相同的一个(不可变)元素元组的两个独立构造最终创建两个相同的对象.我测试了,并且frozenset以类似于元组的方式工作.

是什么决定了一个对象是在内存中复制还是会有一个包含大量引用的实例?它取决于对象在某种意义上是否是"原子"的?它是否因实施而异?

python oop reference object python-3.x

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

Prime数字打印机停在251,为什么?

我今天开始学习Python,我想出了创建一个程序,打印从0到10 000的所有素数的想法.我设法让我的程序打印出所有质数,直到251,此时它停止打印出数字.为什么这样做?

这是代码:

for numberToCheck in range(2,10000):
    divider = 2
    while numberToCheck > divider:
        if numberToCheck % divider is 0:
            break
        else:
            divider += 1
    if numberToCheck is divider:
        print(numberToCheck, "is a prime number.")
Run Code Online (Sandbox Code Playgroud)

python

33
推荐指数
3
解决办法
1882
查看次数

是否需要"使用严格"的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万
查看次数

Python的首选比较运算符

是否优先做:

if x is y:
    return True
Run Code Online (Sandbox Code Playgroud)

要么

if x == y
    return True
Run Code Online (Sandbox Code Playgroud)

同样的事情是"不是"

python comparison

23
推荐指数
4
解决办法
7367
查看次数

如何使用标准应用程序打开文件?

我的应用程序将PDF打印到临时文件.如何使用Python中的默认应用程序打开该文件?

我需要一个解决方案

  • 视窗
  • Linux(Ubuntu和Xfce,如果没有更通用的话.)

有关

python linux windows

21
推荐指数
3
解决办法
2万
查看次数

a == b是假的,但是id(a)== id(b)是真的吗?

进入以下几点:

>>> class A:
...     def __str__(self):
...             return "some A()"
... 
>>> class B(A):
...     def __str__(self):
...             return "some B()"
... 
>>> print A()
some A()
>>> print B()
some B()
>>> A.__str__ == B.__str__
False # seems reasonable, since each method is an object
>>> id(A.__str__)==id(B.__str__)
True # what?!
Run Code Online (Sandbox Code Playgroud)

这里发生了什么?

python methods overriding object

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

==并且在python中

自从我开始学习python以来已经过了几天,此时我偶然发现了==is.来自java背景我假设==通过对象id和is值进行比较,但是这样做

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

好像is相当于java ==和python ==相当于java的equals().这是考虑is和之间区别的正确方法==吗?或者有一个警告?

python

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

'变量'或'变量不是无'

Variable = None
Run Code Online (Sandbox Code Playgroud)

在特定情况下这三者之间有什么区别吗?如果哪一个更适合使用没有区别?

if Variable:
 print "Hello world"
Run Code Online (Sandbox Code Playgroud)

if Variable is not None:
 print "Hello world"
Run Code Online (Sandbox Code Playgroud)

if Variable != None:
 print "Hello world"
Run Code Online (Sandbox Code Playgroud)

无变量的情况是一样的吗?

python comparison

12
推荐指数
3
解决办法
2万
查看次数

为什么"是"运算符说这些方法不一样?

考虑以下代码:

class Person(object):
   def sayHello(self):
       return 'Hello'

print(Person().sayHello is Person().sayHello)
Run Code Online (Sandbox Code Playgroud)

我希望它能显示出真实.为什么显示False?

python identity class object python-3.x

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