小编Aiv*_*var的帖子

为什么4*0.1的浮点值在Python 3中看起来不错,但3*0.1不是?

我知道大多数小数都没有精确的浮点表示(浮点数学是否被破坏?).

但我不明白为什么4*0.1打印得很好0.4,但3*0.1不是,当两个值实际上都有丑陋的十进制表示时:

>>> 3*0.1
0.30000000000000004
>>> 4*0.1
0.4
>>> from decimal import Decimal
>>> Decimal(3*0.1)
Decimal('0.3000000000000000444089209850062616169452667236328125')
>>> Decimal(4*0.1)
Decimal('0.40000000000000002220446049250313080847263336181640625')
Run Code Online (Sandbox Code Playgroud)

python floating-point rounding floating-accuracy ieee-754

154
推荐指数
4
解决办法
1万
查看次数

Servlet 3.0中AsyncContext.start(...)的用途是什么?

Servlet API说"AsyncContext.start":

void start(java.lang.Runnable run)

使容器可能从托管线程池调度线程,以运行指定的Runnable.容器可以将适当的上下文信息传播到Runnable.

从该描述中不清楚当作业需要等待时它如何与优化线程使用的任务相关.

在"Servlet和JSP"中,Budi Kurniawan给出了Servlet 3.0异步功能的例子,在他使用的地方AsyncContext.start,我将展示示例的简化版本:

public void doGet(...) {
    final AsyncContext asyncContext = request.startAsync();

    asyncContext.start(new Runnable() {                        
        @ Override
        public void run() {
            // do some work here which involves waiting
            ...
            asyncContext.complete();
        }
    });
}
Run Code Online (Sandbox Code Playgroud)

在我遇到的大多数其他示例中,服务方法只是将AsyncContext存储在某处,并在其他地方处理(例如,通过后台线程).在这个例子中,它似乎只是将作业传递给另一个完成请求的线程.据我所知,现在它只是工作线程,浪费时间等待.

你是否通过将工作(涉及等待)从一个线程传递到另一个线程来获得某些东西?如果没有,那么目的是AsyncContext.start(...)什么?

servlets servlet-3.0

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

如何获取对应于Python AST节点的源代码?

Python AST节点具有linenocol_offset属性,它们指示相应代码范围的开始.是否有一种简单的方法可以获得代码范围的结束?第三方图书馆?

python abstract-syntax-tree

14
推荐指数
3
解决办法
3641
查看次数

为什么擦除会使实现函数类型变得复杂?

我在接受Neal Gafter采访时读到:

"例如,使用Erasure作为泛型的一部分,将函数类型添加到编程语言中要困难得多."

编辑:另一个我遇到类似声明的地方是Brian Goetz 在Lambda Dev邮件列表中消息,他说当lambdas只是具有语法糖的匿名类时更容易处理:

但我对函数类型的反对并不是我不喜欢函数类型 - 我喜欢函数类型 - 但是函数类型与Java类型系统的现有方面,擦除有很大关系.删除的功能类型是两个世界中最糟糕的.所以我们从设计中删除了它.

谁能解释这些陈述?为什么我需要lambdas的运行时类型信息?

java generics language-design type-erasure

11
推荐指数
1
解决办法
479
查看次数

为什么Scala和C#lambdas双箭头?

有谁知道一些背景,为什么Scala和C#使用双箭头(=>)代替lambdas而不是单箭头( - >)?

单箭头在文献中比较常见,用于Haskell,O'Caml,F#,Groovy等等,IMO也看起来更好:)

c# programming-languages scala

9
推荐指数
3
解决办法
1401
查看次数

为什么Clojure允许(eval 3)虽然没有引用3?

我正在学习Clojure并尝试通过与Python的类似功能相似来理解读者,引用,评估和同质性.

在Python中,避免(或推迟)评估的一种方法是将表达式包装在引号之间,例如.'3 + 4'.您可以稍后使用eval,例如,eval('3 + 4')屈服7.(如果只需要引用Python值,则可以使用repr函数而不是手动添加引号.)

在Lisp中,您使用quote'用于引用和eval评估,例如.(eval '(+ 3 4))屈服7.

因此在Python中,"引用"的东西由字符串表示,而在Lisp中,它由quote作为第一项的列表表示.

我的问题,最后:为什么Clojure允许(eval 3)虽然3没有引用?这只是Lisp风格的问题(尝试尽可能给出答案而不是错误)或者还有其他原因吗?这种行为对Lisp是否必不可少?

lisp eval clojure

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

Python的sys.settrace不会创建c_call事件

该文档sys.settrace说它可以报告对c或内置函数的调用.当我尝试关注程序时,我希望看到一个c_call事件,但没有任何反应:

import sys

def tracer(frame, event, arg):
    print(frame, event, arg)
    return tracer

sys.settrace(tracer)

x = len([1,2,3])
Run Code Online (Sandbox Code Playgroud)

任何想法在这里有什么问题?

任何人都可以发布一个使用sys.settrace其生成c_call事件的示例吗?

编辑:最初我尝试使用Python 3.2,它没有给我任何事件.现在我用Python 2.7尝试了它,它给了我两个call(不是c_call-s).仍然很奇怪.

python debugging

8
推荐指数
1
解决办法
422
查看次数

如何列出系统中安装的所有Python版本?

我需要向用户提供一个Python安装列表,供您选择执行某些操作.我想在Windows中我可以从注册表中获取此信息.不了解Linux和Mac.

任何提示?或者你甚至可能知道我可以找到Python代码的地方?

编辑:我找到真正的所有口译员并不重要.从标准位置寻找口译员实际上很好.同意,这不是太困难,但我只是希望有人可能会有这样的代码,或者我在stdlib中忽略了一个函数.

python

8
推荐指数
1
解决办法
2613
查看次数

Python 3 字符串排序是否取决于语言环境?

做Python的str.__lt__sorted顺序字符根据其Unicode索引或某些区域设置相关的排序规则?

python unicode python-3.x

8
推荐指数
1
解决办法
1099
查看次数

Matplotlib子图与轴对轴(单数/复数)

你能否澄清一些Matplotlib术语:

  • "子图"(或"子图"?)是"轴"的同义词吗?
  • 什么是单轴/复数的"轴"和"轴"?

matplotlib

8
推荐指数
1
解决办法
1417
查看次数