如何在Linux中分发独立的Python应用程序?
我想我可以理所当然地认为在任何现代发行版中都有最近的Python解释器.问题是处理那些不属于标准库的库,即wxPython,scipy,python cryptographic toolkit,reportlab等.
是否有一个可用的Linux副本,比方说,py2exe(顺便说一下,我从未尝试过)?有一个免费的,开源的吗?
当我设计类并且必须在继承和组合之间进行选择时,我通常使用经验法则:如果关系是"is-a" - 使用继承,如果关系是"has-a" - 使用组合.
总是对的吗?
谢谢.
你能发一个真实的,过度的意大利面条代码的简短例子,可能会说它的作用是什么?你能告诉我一个小调试器的噩梦吗?
我不是指IOCCC代码,那是科幻小说.我的意思是发生在你身上的现实生活例子......
重点已从"发布一些意大利面条代码"到"什么是改变究竟面条代码?".从历史的角度来看,目前的选择似乎是:
我需要在Python中执行以下操作.我想生成一个进程(子进程模块?),并且:
实现这一目标的最优雅方式是什么?
在经典的"四人帮"列表中,您是否经常发现任何被滥用,误解或过度使用的设计模式(除了备受争议的单身人士之外)?换句话说,有没有一种设计模式,建议您在使用前三思而后行?(为什么?)
到目前为止,我已经看到很多关于浮点数相等的帖子.对于"我们应该如何决定x和y是否相等?"这样的问题的标准答案.是
abs(x - y) < epsilon
Run Code Online (Sandbox Code Playgroud)
其中epsilon是一个固定的小常数.这是因为"操作数"x和y通常是涉及舍入误差的某些计算的结果,因此标准相等运算符==不是我们的意思,我们应该问的是x和y是否接近,不相等.
现在,我觉得如果x与y"几乎相等",那么x*10 ^ 20也应该与y*10 ^ 20"几乎相等",因为相对误差应该是相同的(但是"相对的" "到底是什么?" 但是对于这些大数字,上述测试将失败,即该解决方案不会"扩展".
你会如何处理这个问题?我们应该重新调整数字还是重新调整epsilon?怎么样?(或者我的直觉是错的吗?)
这是一个相关的问题,但我不喜欢它接受的答案,因为reinterpret_cast对我来说似乎有点棘手,我不明白发生了什么.请尝试提供简单的测试.
不完全确定如何表达这个问题,因为它是"为什么这不起作用?" 查询类型.
我已将我的特定问题减少到此代码:
public interface IFoo
{
}
public class Foo : IFoo
{
}
public class Bar<T> where T : IFoo
{
public Bar(T t)
{
}
public Bar()
: this(new Foo()) // cannot convert from 'Foo' to 'T'
{
}
}
Run Code Online (Sandbox Code Playgroud)
现在,通用类型T的Bar<T>类必须实现IFoo的.那么为什么编译器会在评论中给出错误?当然,Foo的一个实例是IFoo,因此可以作为泛型类型的代表传递T?
这是编译器限制还是我遗漏了什么?
我已经读过,在Java中,String类型的对象无法更改.但int和char变量可以.为什么?能给我举个例子?
谢谢.(我是新手-_-)
我在同事的Bash脚本中看到了tar的以下有趣用法:
`tar cf - * | (cd <dest> ; tar xf - )`
Run Code Online (Sandbox Code Playgroud)
显然它的工作方式与rsync -av相似,但速度更快.问题出现了,怎么样?
-m
编辑:任何人都可以解释为什么这个解决方案优于以下?
cp -rfp * dest
Run Code Online (Sandbox Code Playgroud)
前者更快吗?
这个问题询问如何计算给定数量向量的笛卡尔乘积.由于向量的数量是预先知道的并且相当小,因此使用嵌套的for循环很容易获得解决方案.
现在假设您以您选择的语言给出了向量(或列表列表或集合等)的向量:
l = [ [1,2,3], [4,5], [6,7], [8,9,10], [11,12], [13] ]
Run Code Online (Sandbox Code Playgroud)
如果我被要求计算其笛卡尔积,那就是
[ [1,4,6,8,11,13], [1,4,6,8,12,13], [1,4,6,9,11,13], [1,4,6,9,12,13], ... ]
Run Code Online (Sandbox Code Playgroud)
我会继续递归.例如,在快速和肮脏的python中,
def cartesianProduct(aListOfLists):
if not aListOfLists:
yield []
else:
for item in aListOfLists[0]:
for product in cartesianProduct(aListOfLists[1:]):
yield [item] + product
Run Code Online (Sandbox Code Playgroud)
有一种简单的方法可以迭代计算它吗?
(注意:答案不需要在python中,无论如何我都知道在python中,itertools可以更好地完成工作,就像在这个问题中一样.)