小编WKP*_*lus的帖子

"你在Haskell中通过声明什么而不是声明你如何得到它来进行计算"的含义是什么?

最近我正在尝试学习一种函数式编程语言,我选择了Haskell.

现在我正在阅读学习一个haskell,这里的描述似乎是Haskell的哲学我不确定我是否完全理解它:你在Haskell中通过声明什么而不是声明你如何得到它来进行计算.

假设我想得到一个列表的总和.

声明你如何得到它的方式:通过添加所有元素来获得总和,所以代码将是这样的(不是haskell,python):

sum = 0
for i in l:
    sum += i
print sum
Run Code Online (Sandbox Code Playgroud)

什么样的东西是这样:总和是第一要素,其余元素的总和的总和,因此代码将是这样的:

sum' :: (Num a) => [a] -> a
sum' [] = 0
sum' (x:xs) = x + sum' xs
Run Code Online (Sandbox Code Playgroud)

但我不确定我是否得到它.有人可以帮忙吗?谢谢.

haskell

6
推荐指数
1
解决办法
281
查看次数

有没有办法在模拟器中将ro.kernel.qemu设置为0?

ro.kernel.qemu=0用yaffey 替换了一个修改后的build.prop,它包含在system.img中,但它没有用.当模拟器重新启动时,ro.kernel.qemu=1仍然存在于输出中adb shell getprop.

编辑:

我也尝试过:

  1. ro.kernel.qemu=0在ramdisk.img中添加default.prop
  2. setprop ro.kernel.qemu 0在ramdisk.img中添加init.goldfish.rc

但所有这些都没有用.当我用修改后的ramdisk.img启动模拟器时,ro.kernel.qemu输出中仍然是1 adb shell getprop.

我现在正在尝试重建内核以将其设置为0,但我没有找到ro.kernel.qemu内核源代码中设置的位置.

感谢任何建议.

android android-emulator

6
推荐指数
1
解决办法
3678
查看次数

python selenium等待页面加载

我编写了一个从页面获取数据的脚本,但有时页面需要时间来加载,因此当它将html拉入汤对象时,它会拉动任何内容,因为页面仍然需要完成.

我编写了以下代码来等待页面完成.

def scrape_page(url):
     browser.get(url)    
     try:
        WebDriverWait(browser, 10).until(EC.presence_of_element_located(browser.find_element_by_id ("selection-box")))
        #Extract Source Code 
        html = browser.page_source;
        soup = BeautifulSoup(html)
Run Code Online (Sandbox Code Playgroud)

有用

但是当我调用该函数时,我收到以下错误;

TypeError: find_element() argument after * must be a sequence, not WebElement
Run Code Online (Sandbox Code Playgroud)

python selenium

6
推荐指数
1
解决办法
6077
查看次数

如何在python中重载内置模块?

我正在尝试将主机绑定到我的python程序中的指定ips。只需使其在python程序中起作用即可,因此我将不修改该/etc/hosts文件。

我试图在该create_connection函数中添加一些代码以socket.py进行主机IP转换,如下所示:

host, port = address  # the original code in socket.py
# My change here:
if host == "www.google.com":
    host = target_ip  
for res in getaddrinfo(host, port, 0, SOCK_STREAM): # the original code in socket.py
Run Code Online (Sandbox Code Playgroud)

我发现它工作正常。

现在,我希望host-ip转换仅在此python程序中有效。

所以我的问题是:使用时,如何使我的python程序导入此socket.py而不是内置的import socket

为了清楚起见,这是一个示例。假设“ test”是我的工作目录:

test
|--- main.py
|--- socket.py
Run Code Online (Sandbox Code Playgroud)

在这种情况下:

  1. 我怎样才能使main.py使用test / socket.py import socket

  2. 如何在使用其他模块时使用test / socket.py import socket

我认为更改模块查找路径顺序可能会有所帮助。但是我发现,即使当前path('')已经位于sys.path并且import socket仍然会导入内置的scoket模块。

python sockets

5
推荐指数
1
解决办法
892
查看次数

在Django中使用QuerySet.update()与ModelInstance.save()

我很好奇其他人对这个问题的看法......

在过去的几天里,我一直在来回使用QuerySet.update()与对战ModelInstance.save().显然,如果有很多字段被更改,我会使用save(),但是为了更新几个字段,我认为最好使用它QuerySet.update().使用的好处QuerySet.update()是,您可以update()在同一对象的不同字段上同时运行多个线程,并且您不会遇到种族问题.默认save()方法保存所有字段,因此save()从两个线程并行将是有问题的.

那么问题是如果你有重载的自定义save()方法.我能想到的最好的方法是将自定义save()方法中的任何内容抽象为单独的更新程序方法,这些方法实际上用于QuerySet.update()在模型中设置几个字段.有人用过这种模式吗?

令人恼火的是,在Django Admin中,即使在您只编辑一个字段的更改列表模式下进行编辑,整个模型也会被保存.这基本上意味着如果有人在他/她的浏览器上打开了更改列表,而在系统中某个其他地方更新了某个字段,则当该用户从更改列表中保存更改时,该更新的值将被丢弃.有这个问题的解决方案吗?

思考?

谢谢.

django

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

Beutifulsoup从html中提取所有外部资源

我希望识别 html 文件中请求外部资源的 url。

我目前使用和标签scr中的属性,以及标签中的属性(用于识别css)。imgscripthreflink

我是否应该检查其他标签来识别其他资源?

作为参考,我的 Python 代码目前是:

html = read_in_file(file)
soup = BeautifulSoup(html)
image_scr = [x['src'] for x in soup.findAll('img')]
css_link = [x['href'] for x in soup.findAll('link')]
scipt_src = []   ## Often times script doesn't have attributes 'src' hence need for try/except
for x in soup.findAll('script'):
    try:
        scipt_src.append(x['src'])
    except KeyError:
        pass        
Run Code Online (Sandbox Code Playgroud)

html python beautifulsoup

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

为什么python dict更新疯狂?

我有一个python程序,它从文件中读取行并将它们放入dict中,简单来说,它看起来像:

data = {'file_name':''}
with open('file_name') as in_fd:
    for line in in_fd:
        data['file_name'] += line
Run Code Online (Sandbox Code Playgroud)

我发现它需要几个小时才能完成.

然后,我对程序做了一些改动:

data = {'file_name':[]}
with open('file_name') as in_fd:
    for line in in_fd:
        data['file_name'].append(line)
    data['file_name'] = ''.join(data['file_name'])
Run Code Online (Sandbox Code Playgroud)

它在几秒钟内完成.

我认为这+=会使程序变慢,但似乎没有.请查看以下测试的结果.

我知道我们可以使用list append和join来提高concat字符串的性能.但我从未想过追加和加入以及添加和分配之间存在这样的性能差距.

所以我决定做更多的测试,最后发现它是dict更新操作使程序疯狂地慢.这是一个脚本:

import time
LOOPS = 10000
WORD = 'ABC'*100

s1=time.time()
buf1 = []
for i in xrange(LOOPS):
    buf1.append(WORD)
ss = ''.join(buf1)

s2=time.time()
buf2 = ''
for i in xrange(LOOPS):
    buf2 += WORD

s3=time.time()
buf3 = {'1':''} …
Run Code Online (Sandbox Code Playgroud)

python performance dictionary cpython python-internals

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

为什么haskell同时保持isAlpha和isLetter?

从书中学习了一个哈克尔,我发现isAlphaisLetter检查一个角色是否是一个字母.

我在这里找到了一个问题和答案,其中说这两个函数之间没有区别.

现在,我想知道为什么要haskell两者兼顾?有历史原因吗?

我在这里找到了一个解释,它说保持两个都是为了向后兼容,但我不确定这是不是确切的原因.

有谁知道更多?

haskell

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