小编fin*_*oot的帖子

如何找出函数的(源代码)是否包含循环?

比方说,我有一堆的功能a,b,c,de我想看看他们是否直接使用一个循环:

def a():
    for i in range(3):
        print(i**2)

def b():
    i = 0
    while i < 3:
        print(i**2)
        i += 1

def c():
    print("\n".join([str(i**2) for i in range(3)]))

def d():
    print("\n".join(["0", "1", "4"]))

def e():
    "for"
Run Code Online (Sandbox Code Playgroud)

我想写一个函数,uses_loop所以我可以期望这些断言传递:

assert uses_loop(a) == True
assert uses_loop(b) == True
assert uses_loop(c) == False
assert uses_loop(d) == False
assert uses_loop(e) == False
Run Code Online (Sandbox Code Playgroud)

(我希望uses_loop(c)返回,False因为c使用列表解析而不是循环.)

我不能修改a,b …

python loops static-analysis abstract-syntax-tree inspect

9
推荐指数
1
解决办法
296
查看次数

如何在不依赖其他软件的情况下为多个工作人员的 Flask 应用程序提供共享状态?

我想为与多个工作人员(即多个进程)一起运行的 Flask 应用程序提供共享状态。

从关于这个主题的类似问题中引用这个答案

您不能使用全局变量来保存此类数据。[...] 使用 Flask 之外的数据源来保存全局数据。根据您的需要,数据库、memcached 或 redis 都是合适的独立存储区域。

(来源:flask 中的全局变量线程安全吗?如何在请求之间共享数据?

我的问题是关于如何在 Flask 的“外部”提供数据的建议的最后一部分。目前,我的网络应用程序非常小,我想避免对其他程序的要求或依赖。如果我不想在后台运行 Redis 或其他任何东西,而是提供 Web 应用程序的 Python 代码的所有内容,我有哪些选择?

python concurrency web-applications shared-state flask

9
推荐指数
1
解决办法
3065
查看次数

Python为Selenium设置Firefox首选项 - 下载位置

我使用Selenium Marrionette和GeckoDriver来提取网络数据.我使用以下命令设置我的Firefox配置文件首选项:

fp = webdriver.FirefoxProfile()
fp.set_preference("browser.download.folderList", 1)
fp.set_preference("browser.helperApps.alwaysAsk.force", False)
fp.set_preference("browser.download.manager.showWhenStarting",False)
fp.set_preference("browser.download.dir", "H:\Downloads")
fp.set_preference("browser.download.downloadDir","H:\Downloads")
fp.set_preference("browser.download.defaultFolder","H:\Downloads")

binary = FirefoxBinary(r'C:\Program Files (x86)\Mozilla Firefox\Firefox.exe')

firefox_capabilities = DesiredCapabilities.FIREFOX
firefox_capabilities['marionette'] = True

driver = webdriver.Firefox(capabilities=firefox_capabilities, firefox_binary=binary, firefox_profile = fp)
Run Code Online (Sandbox Code Playgroud)

根据我的理解,阅读无法设置firefox配置文件首选项并将FirefoxProfile传递给FirefoxDriver后,现在使用时似乎没有做任何事情firefox_profile.所以我需要实现新的更新firefox_capabilities,但我不确定如何做到这一点.有任何想法吗?

python selenium web-scraping firefox-marionette geckodriver

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

Jupyter Notebook ipynb 中的图像未显示在 GitHub 私有存储库中,但相同的代码适用于公共存储库

.ipynb我的 GitHub 存储库中有一个 Jupyter Notebook文件。它应该通过以下降价代码显示图像:

![image](image.png)
Run Code Online (Sandbox Code Playgroud)

当存储库是公开的时,图像确实会显示。但是,当存储库设置为私有时,只有备用标题“图像”可见,并且不会加载图像。如果我右键单击它并选择“查看图像”,图像加载正常。

.mdMarkdown 文件也不存在此问题:上面的同一行适用于公共和私有存储库。

这个答案描述了如何图像嵌入.ipynb文件中,但这不是我要找的。我想.png动态显示文件。

python markdown github jupyter jupyter-notebook

8
推荐指数
1
解决办法
2690
查看次数

`jqXHR.status`的可能值是什么?

有什么可能的值jqXHR.status

到目前为止,我可以看到以下内容:

if (jqXHR.status === 0) { msg = 'Network Problem'; }
else if (jqXHR.status == 404) { msg = 'Requested page not found. [404]'; }
else if (jqXHR.status == 500) { msg = 'Internal Server Error [500].'; }
Run Code Online (Sandbox Code Playgroud)

javascript ajax jquery http

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

如何在Travis CI中缓存通过`apt-get`安装的软件包?

所以,有了我.travis.yml,我正在安装一些包apt-get,下载时间不会太长,但安装时间很长.

有没有办法让Travis CI记住已安装的软件包,所以我不必为每个构建从头开始安装它们?

caching apt github travis-ci

7
推荐指数
1
解决办法
2354
查看次数

在Python的dicts列表中查找max len的所有dicts

我有一个词典列表

ld = [{'a':1}, {'b':2, 'c':3}, {'d':4, 'e':5}]
Run Code Online (Sandbox Code Playgroud)

我需要从列表中获取所有长度最长的元素,即

{'b':2, 'c':3}` and `{'d':4, 'e':5}
Run Code Online (Sandbox Code Playgroud)

我对Python不是很了解,但我发现:

>>> max(ld, key=len)
{'b': 2, 'c': 3}`  
Run Code Online (Sandbox Code Playgroud)

而且,一个更好的解决方案,返回最长字典的索引:

>>> max(enumerate(ld), key=lambda tup: len(tup[1]))
(1, {'b': 2, 'c': 3})
Run Code Online (Sandbox Code Playgroud)

我想使用一个返回类似的表达式

(1: {'b': 2, 'c': 3}, 2: {'d':4, 'e':5})
Run Code Online (Sandbox Code Playgroud)

我觉得我离解决方案不远(或者我可能)但我只是不知道如何得到它.

python

7
推荐指数
1
解决办法
507
查看次数

使用geckodriver / Firefox的`driver.execute_script(“ ...”)`和driver.get(“ javascript:...”`)有什么区别?

我认为,这个问题与硒的内部运作有关。在另一篇有关Selenium请求的HTTP标头中缺少Referer的文章中,很明显,运行之间有区别

driver.execute_script("window.location.href = '{}';".format(url))
Run Code Online (Sandbox Code Playgroud)

driver.get("javascript: window.location.href = '{}'".format(url))
Run Code Online (Sandbox Code Playgroud)

后一个命令将发送Referer带有请求的标头,前一个则不会。

此时,这是否是所需的行为或错误,并且Referer应该由两个命令发送都无关紧要。而且,window.location.href = ...仅是示例。

然而,很明显,必须有与命令运行的JavaScript之间的差异driver.execute_script("...")driver.get("javascript: ..."如果他们不产生相同的结果。因此,问题更多是关于两个命令在内部不调用相同的Selenium代码这一事实。

这两个命令有什么区别?

python http-referer selenium webdriver geckodriver

7
推荐指数
1
解决办法
1362
查看次数

因为我无法在顶层运行等待,所以我必须将其放入异步函数中 - 为什么我可以直接调用该异步函数?

我有一个简短的 Node.js 脚本,我需要另一个包并从中调用异步函数,然后想要打印返回值。如果我只是await从顶层返回值,那么我会得到一个错误,说我只能await在异步函数本身内部使用。所以显然要走的路是这样的:

async function main() {
  foo = await someOtherAsyncFunc();
  console.log(foo);
}
main()
Run Code Online (Sandbox Code Playgroud)

或者:

(async function() {
  foo = await someOtherAsyncFunc();
  console.log(foo);
})();
Run Code Online (Sandbox Code Playgroud)

或者:

(async () => {
  foo = await someOtherAsyncFunc();
  console.log(foo);
})();
Run Code Online (Sandbox Code Playgroud)

(感谢聊天中的 VLAZ https://chat.stackoverflow.com/transcript/message/54186176#54186176

这是可行的 - 但我想更多地了解其背后的原因:我习惯了无法直接await从顶层使用。然而,我也习惯于必须调用一些特殊的库函数才能真正从顶层“冒险”进入异步。在 Python 中,请参见asyncio.run示例。await如果我可以从顶层调用任何异步函数,那么要求位于异步函数内有什么意义?那么为什么await顶层也不可用呢?

javascript asynchronous node.js async-await

7
推荐指数
1
解决办法
7371
查看次数

如何将tkinter Scale小部件滑块的默认值设置为100?

如何将滑块的默认值设置为100?

self.slider = tk.Scale(self.leftFrame, from_=0, to=256, orient=tk.HORIZONTAL, command=updateValue)
Run Code Online (Sandbox Code Playgroud)

python tkinter slider tkinter-scale

6
推荐指数
2
解决办法
8840
查看次数