小编max*_*max的帖子

为什么使用外部作用域中定义的函数不会破坏参照透明度?

我正在学习Haskell.如果我理解正确,Haskell中的一个简单函数总是在引用透明.我认为这意味着它的输出仅取决于传递给它的参数.

但是函数f可以调用g外部作用域中定义的另一个函数.所以从这个意义上讲,f回归价值取决于其定义g.并且函数gf作为参数传递- 至少不是显式的.这不会破坏参考透明度吗?

haskell referential-transparency

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

退出Python解释器而不运行垃圾收集

在我的程序结束时,没有真正需要发生的事情,CPython 3.2解释器花了将近2分钟进行垃圾收集.这是一个众所周知的问题.

幸运的是,在我的情况下,我不需要在程序结束之前进行任何垃圾收集.因此,我只需要找到一种在程序完成后退出程序的方法,而无需gc.collect()运行.

在Windows上按"CTRL + C"似乎是这样做的.我想我也可以找到python解释器的进程ID,并使用OS调用将其终止.

有没有办法使用纯Python(可能是异常或标准库调用)实现相同的效果,希望平台无关?

python garbage-collection interrupt python-3.x

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

Python:类型注释,如何定义元组的元素?

这是一个最小的情况。

def foo(x:int, y:int) -> tuple: 
    return (x*y, y//2)
Run Code Online (Sandbox Code Playgroud)

能够编写-> tuple(:int, :int)无效格式的格式非常诱人。在这种情况下是否有正确的方法,还是在python沿着类型注释之路进一步移动之前它仍然是灰色区域?

编辑:显然有可能做类似的事情

def bar(x, y) -> ((str, int), (str, int)): 
     return ("%s+%s" %(x,y), x+y), ("%s-%s" %(x,y), x-y) 
Run Code Online (Sandbox Code Playgroud)

python static-typing type-annotation

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

cmap 和颜色列表之间的区别

颜色图(根据contour许多其他绘图函数的要求)和简单的颜色列表有什么区别?如何将颜色列表(每种颜色应该代表相同大小的步骤)转换为颜色图?

python matplotlib python-3.x

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

UDF与自定义表达式

就Spark DataFrame / SQL上下文而言,UDF和自定义表达式之间有什么区别?尤其是它们对Catalyst都是不透明的吗?使用一个vs另一个的原因是什么?

(例如,此处提到了自定义表达式-尽管在这种情况下不需要它们。)

scala apache-spark

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

RDD API与UDF混合使用DataFrame API的性能影响

(Scala特定的问题.)

虽然Spark文档鼓励尽可能使用DataFrame API,但如果DataFrame API不足,则通常选择回退到RDD API或使用UDF.这两种选择之间是否存在固有的性能差异?

RDD和UDF类似,因为它们都不能从Catalyst和Tungsten优化中受益.是否还有其他开销,如果存在,两种方法之间是否存在差异?

举一个具体的例子,假设我有一个DataFrame,它包含一列带有自定义格式的文本数据(不适合regexp匹配).我需要解析该列并添加一个包含结果标记的新向量列.

performance scala apache-spark rdd apache-spark-sql

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

Git HEAD 指的是分支与提交

根据Pro Git Book

\n\n
\n

在 Git 中,HEAD 是指向您当前所在的本地分支的指针。

\n
\n\n

这与计算机科学家的 Git一致:

\n\n
\n

HEAD 引用的特殊之处在于它实际上指向另一个引用。它是指向当前活动分支的指针。

\n
\n\n

事实证明

\n\n
\n

HEAD 不是最新版本,而是当前版本。通常,它是当前分支的最新版本,但不一定是。

\n
\n\n

例如

\n\n
\n

如果您签出较旧的内容(例如像 git checkout v1.1 这样的标签),那么您的 HEAD 会更改为该标签的提交。它可能不是最新的提交。

\n
\n\n

所以 HEAD 可以指向一个分支或者。当 HEAD 引用分支 X 时,与 HEAD 引用分支 X 的实际头提交相比,git 命令的行为是否有不同?(在类似 C 的表示法中,我正在讨论当 **HEAD 引用某个提交时与 *HEAD 引用相同提交时的情况。)

\n

git git-branch

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

子类化float以强制python中的定点打印精度

[Python 3.1]

我正在跟进这个答案:

class prettyfloat(float):
  def __repr__(self):
    return "%0.2f" % self
Run Code Online (Sandbox Code Playgroud)

我知道我需要跟踪我的浮动文字(即替换3.0prettyfloat(3.0)等),这很好.

但每当我做任何计算时,prettyfloat对象都会被转换成float.

修复它的最简单方法是什么?

编辑:

我需要两个十进制数字; 我需要在整个代码中使用它,包括我float在里面打印带有值的字典.这使得任何格式化功能都难以使用.

我不能使用Decimal全局设置,因为我希望计算完全精确(只需打印2个小数点).

@Glenn Maynard:我同意我不应该凌驾__repr__; 如果有的话,那就是公正的__str__.但由于以下几点,这是一个有争议的问题.

@Glenn Maynard和@singularity:我不会继承float,因为我同意它最终看起来很难看.

我将停止尝试变得聪明,并且只是float在打印时调用函数.虽然我真的很难过,但我无法覆盖__str__内置课程float.

谢谢!

python floating-point subclass built-in-types python-3.x

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

python:在循环中赋值之前避免使用变量的bug

for element in container:
  # some code here
  temp_variable = f1(element)
  # more code

# much later in the code

for element in container:
  # some code
  another_variable = g(temp_variable)
  # more code
  temp_variable = f2(element)
  # more code
Run Code Online (Sandbox Code Playgroud)

在第二个for循环中,我temp_variable在分配之前意外使用了变量.通常情况下,我会得到NameError异常,但不幸的是,它从前一个循环中幸存,有效并初始化.

是否有任何编码实践,IDE工具等有助于防止此类错误?

顺便说一下,我觉得如果循环内的变量不能在循环结束后存活可能会更好.

编辑

@Ignacio Vazquez-Abrams:

如果我理解正确,建议不要在多个循环中使用相同的变量名作为局部变量.我有两个问题:

  1. 通常,在多个循环中使用的最具描述性的变量名称恰好相同.说,我用过类似的东西unique_visitor_count.我不想禁止这个变量在代码中进一步使用,在另一个循环中.

  2. 在处理现有代码时,检查我之前是否已经使用过任何新的变量名称是非常繁重的.

python coding-style namespaces

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

Python:捕获可变的默认参数

我知道这个问题以及如何解决它.我想请求帮助在现有代码中找到此问题.

换句话说,我试图找到埋藏这个陷阱的所有位置,所以我可以解决它.

有什么工具可以帮助我吗?

python ide debugging

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