私信  •  关注

S.Lott

S.Lott 最近创建的主题
S.Lott 最近回复了
16 年前
回复了 S.Lott 创建的主题 » 如何准备django项目以备将来的更改

“会有事情发生,我希望早点实施”

这就是好网站的定义。进化者进化和改变的人。

“未来准备好了吗?”

总会有变化的。这对你以前的技术选择总是毁灭性的。

除了拒绝参与新技术之外,你不能阻止、阻止甚至减少变化的影响。

17 年前
回复了 S.Lott 创建的主题 » python:从文件中读取最后的'n'行[重复]

仔细想想,这可能和这里的任何东西一样快。

def tail( f, window=20 ):
    lines= ['']*window
    count= 0
    for l in f:
        lines[count%window]= l
        count += 1
    print lines[count%window:], lines[:count%window]

简单多了。而且似乎进展得很快。

15 年前
回复了 S.Lott 创建的主题 » 使用python语法的子集加速编写c程序

如果你想输入更少的C,你不需要语法技巧。

您需要一个更好的、更高级的结构库,这样您实际上键入的c更少,而不是更少的字符来创建伪c。

如果你有一个更好的,更高级的结构库,你可以用一个简短的,易于阅读的语法正确地编写面向对象的程序。

将这一点推向逻辑的极端,您可以创建可以从python调用的漂亮的库包。然后您可以切换到python,输入更少的内容并完成相同的工作量。

15 年前
回复了 S.Lott 创建的主题 » 人们对Python的社区和生态系统应该了解什么?[关闭]

“刚开始使用python时,最让您困惑的是什么?”

学习Python的规则1: 利用源头,卢克。

关于这个问题,我们有一个疑问,那就是要寻找“好的”源代码,从中学习Python。最好的答案是“阅读Python附带的库”。

可以说,与Python一起提供的库很奇怪。在某些地方。这使他们更适合学习。

  1. 有一群志同道合的人,他们不是克隆人。

  2. 开放源码软件是你能接触到的最高质量的软件,但它不是由严格执行标准的付费开发人员创建的。

15 年前
回复了 S.Lott 创建的主题 » 人们对Python的社区和生态系统应该了解什么?[关闭]

“刚开始使用python时,最让您困惑的是什么?”

学习Python的规则2: 您认为需要的任何通用模块或框架已经编写完毕。好几次。

最困难的部分是意识到你的想法是

  1. 不是唯一的。

  2. 在你开始思考之前就已经有所改进了。

  3. 已经在某个地方发布了。

所以,少编码多搜索。广泛而灵活地搜索,直到找到与你想做的相似的事情。

  • 认识到你可能有一个你认为是描述性的名字。但其他人可能会称之为不同的东西。加入社区,采用他们的命名。你可能不喜欢“ORM”这个词,但这就是它的名字。

  • 意识到你的想法,不管听起来如何,可能真的很糟糕。当您发现一个框架似乎具有“不必要的额外特性”时,您的想法可能会有所遗漏。

  • 意识到你的想法,不管它看起来多么“直观”,可能真的很糟糕。当你找到一个看起来“反直觉”的框架时,问题可能是你的。先学习他们的,然后在你掌握了他们的之后进行比较和对比。在你掌握了他们之前,继续寻找和学习。

15 年前
回复了 S.Lott 创建的主题 » 在Python代码中,您在哪里使用生成器特性?

在所有情况下,我都有读任何东西的算法,我只使用生成器。

为什么?

在多个生成器的上下文中,在过滤、映射和约简规则中进行分层要容易得多。

例子:

def discard_blank( source ):
    for line in source:
        if len(line) == 0:
            continue
        yield line

def clean_end( source ):
    for line in source:
        yield line.rstrip()

def split_fields( source ):
    for line in source;
        yield line.split()

def convert_pos( tuple_source, position ):
    for line in tuple_source:
        yield line[:position]+int(line[position])+line[position+1:]

with open('somefile','r') as source:
    data= convert_pos( split_fields( discard_blank( clean_end( source ) ) ), 0 )
    total= 0
    for l in data:
        print l
        total += l[0]
    print total

我的偏好是使用许多小的生成器,这样一个小的更改就不会破坏整个流程链。

15 年前
回复了 S.Lott 创建的主题 » 为什么不可能创建一个实用的Perl-to-python源代码转换器?

为什么Perl不是Python。

  1. Perl的语句或多或少都是Python所缺少的。虽然您可以设计匹配语句,但语法与Perl完全不同,因此很难称之为“翻译”。你真的需要烹饪一些精美的python东西,使它像最初的perl一样简洁。

  2. Perl具有运行时语义,这与Python非常不同,使得翻译非常具有挑战性。下面我们只看一个例子。

  3. Perl的数据结构与python的数据结构完全不同,因此很难进行转换。

  4. 默认情况下,Perl线程不共享数据。只能共享选定的数据元素。Python线程有更常见的“共享一切”数据。

一个2的例子就足够了。

Perl:

do_something || die()

哪里有东西? 任何 任何形式的声明。

要自动将其转换为python,必须将 || die() 语句在

try:
   python_version_of_do_something
except OrdinaryStatementFailure, e:
   die()
   sys.exit()

其中比较常见的公式

珀尔

do_something

会变成这样,使用简单的——不思考的——源代码的翻译

try:
   python_version_of_do_something
except OrdinaryStatementFailure, e:
   pass

当然,

珀尔

do_this || do_that || die()

更复杂的是转换成python。

珀尔

do_this && do_that || die()

真的很有说服力。我的Perl已经生锈了,所以我记不起这种东西的精确语义。但是您必须完全理解语义才能计算出一个pythonic实现。

python示例不是 好的 蟒蛇。写 好的 python需要“思考”,这是自动翻译无法做到的。

每一个Perl构造都必须像那样被“包装”,以便把最初的Perl语义变成一种pythonic形式。

现在,对 每一个 Perl的特性。

你可以在这里看到我的大纲: http://homepage.mac.com/s_lott/books/nonprog/html/index.html

这个演示文稿是基于经验教学C,艾达,C++,PL/SQL(甚至一个COBOL课程一次)。

有一本伟大的书,它有一个合理的教育学的概念排序。

R.C.Holt,G.S.Graham,E.D.Lazowska,M.A.Scott。操作系统应用程序的结构化并行编程。1978。艾迪生·韦斯利。0201029375

http://openlibrary.org/b/OL4570626M/Structured_concurrent_programming_with_operating_systems_applications