小编Dav*_*ide的帖子

为什么Python没有签名功能?

我无法理解为什么Python没有sign函数.它有一个abs内置(我认为sign是它的妹妹),但没有sign.

在python 2.6中甚至有一个copysign函数(在数学中),但没有符号.copysign(x,y)当你只能写一个sign然后copysign直接从中获取时,为什么还要写一个abs(x) * sign(y)?后者会更加清晰:x带有y的符号,而对于copysign,你必须记住它的x是否带有y或y的符号,带有x的符号!

显然sign(x)不提供任何东西cmp(x,0),但它也会更具可读性(对于像python这样的高可读性语言,这本来是一个很大的优点).

如果我是一名蟒蛇设计师,那我就是另一种方式:没有cmp内置,而是一个sign.当你需要时cmp(x,y),你可以做一个sign(x-y)(或者,甚至更好的非数字的东西,只是一个x> y - 当然这应该需要sorted接受一个布尔而不是一个整数比较器).这也将更加清晰:正时x>y(而与cmp你必须记住公约正值当第一个,但它可能是周围的其他方式).当然cmp,由于其他原因(例如,在排序非数字事物时,或者如果您希望排序稳定,这是不可能使用简单的布尔值)

所以,问题是:为什么Python设计师决定将该sign功能从语言中删除?为什么麻烦copysign而不是它的父母sign呢?

我错过了什么吗?

编辑 - 在彼得汉森评论之后.很公平,你没有使用它,但你没有说你使用python的.在我使用蟒蛇的7年中,我无数次需要它,最后一根是打破骆驼背部的稻草!

是的,你可以通过cmp,但是我需要通过它的90%的时间都是这样的成语,就像 lambda x,y: cmp(score(x),score(y))用标志就好了.

最后,我希望你同意这sign会比这更有用copysign,所以即使我买了你的观点,为什么还要在数学中定义它而不是标志呢?copysign如何比签名更有用?

python language-design

217
推荐指数
10
解决办法
12万
查看次数

LINES和COLUMNS环境变量在脚本中丢失

考虑以下:

me@mine:~$ cat a.sh 
#!/bin/bash
echo "Lines: " $LINES
echo "Columns: " $COLUMNS
me@mine:~$ ./a.sh 
Lines: 
Columns: 
me@mine:~$ echo "Lines: " $LINES
Lines:  52
me@mine:~$ echo "Columns: " $COLUMNS
Columns:  157
me@mine:~$ 
Run Code Online (Sandbox Code Playgroud)

变量$LINES$COLUMNS是shell变量,不是环境变量,因而不会被导出到子进程(但会被自动更新,当我调整xterm窗口,通过SSH从远程位置登录,即使).有没有办法让我的脚本知道当前的终端大小?

编辑:我需要这个作为解决方法来解决这个问题:vi(以及vim,less和类似的命令)每次使用它时都会搞砸屏幕.更改终端不是一个选项,因此我正在寻找解决方法(向下滚动$LINES线肯定不是完美的解决方案,但至少比丢失前一个屏幕更好)

bash shell terminal environment-variables

62
推荐指数
6
解决办法
4万
查看次数

指向一些好的SVM教程

我一直在努力掌握支持向量机的基础知识,并下载和阅读了许多在线文章.但仍然无法掌握它.

我想知道,如果有的话

  • 很好的教程
  • 示例代码,可用于理解

或者你可以想到的东西,这将使我能够轻松学习SVM基础知识.

PS:我以某种方式设法学习PCA(主成分分析).顺便说一句,你们猜想我正在研究机器学习.

algorithm machine-learning svm libsvm

48
推荐指数
5
解决办法
2万
查看次数

ExitCodes大于255,可能吗?

如果是,在哪个操作系统,shell或其他什么?

考虑下面的java程序(我只是以java为例,任何语言对这个问题都有好处,更多的是关于操作系统):

public class ExitCode {
    public static void main(String args[]) {
        System.exit(Integer.parseInt(args[0]));
    }
}
Run Code Online (Sandbox Code Playgroud)

在Linux和bash上运行它,它总是返回不等于255的值,例如(echo $?打印上一个执行命令的退出代码)

> java ExitCode 2; echo $?
2

> java ExitCode 128; echo $?
128

> java ExitCode 255; echo $?
255

> java ExitCode 256; echo $?
0

> java ExitCode 65536; echo $?
0
Run Code Online (Sandbox Code Playgroud)

编辑:下面的(只有,到目前为止)答案完全解释了在UNIX上发生的事情.我仍然想知道其他操作系统.

shell operating-system exit-code

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

你推荐哪些构建工具用于python?

我正在开始一个小型/中型python项目,可能是在测试驱动开发中.我的背景更多是C和java而不是python(我使用了ant和makefile)

我知道在python中你可能不需要构建工具,但我会,因为我会使用cython和PyInstaller(这个东西应该在几个不同的UNIX上运行,而不是直接依赖于python)而且我想要方便从CLI中选择测试,构建文档,可能检查依赖关系等.

有人抱怨python缺乏类似make的工具.我知道很少有工具,比如scon摊铺机,但我想听听真实用户而不仅仅是他们的网站.有人使用摊铺机吗?

什么是许多软件包附带的常见setup.py?我查看了一些,看看是否有一个常见的用法,但我没有发现任何有趣的东西(也许我使用了错误的例子)

你是否建议至少坚持使用我已经知道的东西(ant和Makefile)?如果是这样,你有没有为python推荐的ant扩展(+ cython + pyinstaller + pyUnit)?


编辑:为了避免像jwp那样的进一步答案,请注意,对于这个项目,我绝对需要我的程序是一个独立的可执行文件,因为绝对不可能在目标平台上运行可执行文件的python VM.我有完全相同的hw可用于编译,所以幸运的是我不需要交叉编译(但我会在更友好的Linux上进行开发).

我还想测试我的代码是否从一开始就在Cython中编译,而不是过早优化,但只是为了确保我不会使用不兼容的功能太过分,如果Cython需要进行痛苦的重构将是非常需要的.

所以请关注我的实际问题

python tdd build-automation unit-testing pyinstaller

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

什么尝试和真正的算法建议相关的文章在那里?

很常见的情况,我打赌.你有一个博客或新闻网站,你有很多文章或blags或你称之为的任何东西,你想在每个网站的底部建议其他似乎相关的东西.

让我们假设每个项目的元数据非常少.也就是说,没有标签,类别.视为一大块文本,包括标题和作者姓名.

你如何找到可能相关的文件?

我对实际的算法很感兴趣,而不是现成的解决方案,虽然我可以看看在ruby或python中实现的东西,或者依赖于mysql或pgsql.

编辑:目前的答案还不错,但我想看到更多.对于一两件事,可能有一些非常简单的示例代码.

text information-retrieval machine-learning document-classification

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

如何获取git log显示(已删除)分支的名称

我喜欢看我的git日志的方式

git log --graph --oneline --all --decorate
Run Code Online (Sandbox Code Playgroud)

除了我发现有用的输出之外,还有分支名称.但是,如果我删除了一个分支,那么上面的代码就不再显示了.我的意思是看到一堆像:

* 87c3294 (QueueExample) blah blah
Run Code Online (Sandbox Code Playgroud)

更具表现力(特别是当列表变长时)比一堆更具表现力

* 87c3294 blah blah
Run Code Online (Sandbox Code Playgroud)

这个问题的答案,特别是这个评论似乎意味着分支名称仍然"在某处".

如何在输出中git log或至少以其他方式打印它们?

或者,我如何从git分支的输出中删除分支,同时仍然保持它们的目的git log

git logging

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

kanban scrumish工具开始使用

在调查了一点scrum和看板之后,我终于读到了这个答案并决定开始使用看板,从scrum中挑选一些东西(注意我主要是靠自己工作,而且我确实读过这个问题及其答案).

现在,我的问题是:哪种工具最适合入门?

  1. 白板和postit
  2. agilezen.com
  3. JIRA与greenhopper
  4. 电子表格(可能在Google文档上)
  5. brightgreenprojects.com
  6. Agilo
  7. 目标过程
  8. 别的东西(请注明)

关于每个的注释:

  1. 我倾向于白板,但有几个缺点(例如,无法制作自动图表,时间测量,指标,有时我在家工作 - 我最需要的地方 - 并且携带不方便:-)

  2. 我不想记住另一个用户名/密码(我答应自己只注册启用OpenID的服务)

  3. 我的雇主有JIRA,但我的团队没有使用它 - 我可能会要求一个帐户(它不应该需要另一个密码),也许以后可能会涉及其他人.但我不知道他们是否正在使用greenhopper,如果安装它是一件大事.

  4. 我一般都讨厌电子表格

  5. 也许是矫枉过正?

  6. 我很高兴有一个localhost实例,但是访问整个组(每个网络/防火墙)可能会有问题 - 不是一个交易破坏者,但肯定是一个问题

我想从中得到什么?

  • 提高生产力
  • 跟踪我在任何特定任务中花费的时间,可能与我的主管讨论问题
  • 追踪最常阻挡我的东西
  • 马上看到我和我的日程安排比较
  • 以更好的方式管理我的长待事清单(例如,更快地回答"我应该做什么?"问题)

你有什么建议吗?

关于scrumish标签的注释:阅读Henrik Kniberg的PDF.他首先在第9页介绍了scrumish的定义.

scrum scrumboard kanban

17
推荐指数
3
解决办法
5043
查看次数

为什么在python中调用list comprehension?

请不要燃烧,要求作为社区维基,所以没有人在这里获得声誉.我知道python不是第一种具有列表理解能力的语言.我只是对这个名字的历史感兴趣.

我特别感兴趣的是为什么它被称为理解

python list-comprehension naming-conventions

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

使用svn,在离线时检查修订号

我离线了(好吧,确切地说我的svn存储库现在无法访问),但是我有一个完全成熟的工作副本我就是,工作:-)

现在我需要知道文件的修订号.如何svn:keywords在离线时检查特定文件的修订号(顺便说一下,没有属性)?

我通常会检查他们svn ls -vsvn log | headsvn blame(当然他们更多比我在寻找现在).

svn version-control revision offline-mode

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