def a(n):
return max([len(n)] + [a(i) for i in n]) if isinstance(n, list) else 0
Run Code Online (Sandbox Code Playgroud)
这是我最近的一次测试,我无法让列表理解得失败.所以基本上这个函数应该返回最大列表的长度(这是我假设基于正确的答案)我会理解,如果不是这部分函数:
+ [a(i) for i in n])
Run Code Online (Sandbox Code Playgroud)
当我看到那个部分时,看起来它增加了迭代的列表长度.有人可以阐明那部分的目的吗?更具体地说,添加的原因.
编辑:所以仔细看之后......看起来函数将第一个列表的长度放在一个列表中,然后放下下一个列表的长度并返回最大值?...这是如何工作的?
我试图在boto3中学习关于低级s3 api的事情,所以我做到了
from pprint import pprint
import boto3
client = boto3.client('s3')
pprint(dir(client))
Run Code Online (Sandbox Code Playgroud)
在REPL中注意到一些令人惊讶的事情(至少对我而言).既然那里有很多人,我会把它归结为这个问题:
>>> from itertools import groupby
>>> groups = groupby(sorted(dir(client), key=type), key=type)
>>> pprint([g[0] for g in groups])
[<type 'str'>, <type 'unicode'>]
Run Code Online (Sandbox Code Playgroud)
一些属性有名称unicode
,有些属于str
.
我的猜测是在boto3源代码中,有些模块有from __future__ import unicode_literals
.另一方面,boto3所做的不仅仅是动态代码生成的公平份额.
有谁知道一些attrs是unicode的真正原因,有些是str,以及它的含义(如果有的话)是什么?
map
并filter
经常与列表内涵互换,但reduce
不那么容易换出的map
和filter
(再说,在某些情况下,我还是比较喜欢的功能语法反正).但是,当你需要对参数本身进行操作时,我发现自己正在进行语法体操,并最终必须编写整个函数来保持可读性.
我将使用map
插图单元测试简单,但请记住,现实生活中的用例可能更难以表达为列表理解.
我发现了两种混乱的方法,但我实际上并没有使用它.
[afunc(*i) for i in aniter] == map(afunc, *zip(*aniter))
[afunc(*i) for i in aniter] == map(lambda i: apply(afunc, i), aniter)
Run Code Online (Sandbox Code Playgroud)
是否有任何简洁,优雅的方式来表达这些表达的右手边?
我目前在bash中有一个提示,它调用一个函数来输出最后一个命令运行的返回码(如果非零):
exit_code_prompt()
{
local exit_code=$?
if [ $exit_code -ne 0 ]
then
tput setaf 1
printf "%s" $exit_code
tput sgr0
fi
}
PS1='$(exit_code_prompt)\$ '
Run Code Online (Sandbox Code Playgroud)
除非$?
不重置,除非运行另一个命令,否则这样可以很好地工作:
$ echo "works"
works
$ command_not_found
bash: command_not_found: command not found
127$
127$
127$
127$ echo "works"
works
$
Run Code Online (Sandbox Code Playgroud)
是否可以$?
在第一次exit_code_prompt()
运行时重置/取消设置父shell 的值,使其不再继续重复提示中的值?
非常感谢,史蒂夫.
perl -l -a -F',' -p -e'if ($. > 1) { $F[6] %= 12; $F[7] %= 12;$_ = join(q{,}, @F[6,7]) }'
Run Code Online (Sandbox Code Playgroud)
这将采用逗号分隔的数字列表,每行8个数字,并以相同的格式输出,除了每行中的最后两个数字以模12减少.它还首先逐字输出第一行(标题行).
我有很多这些不起眼的perl单行程序,我想在第一个实例中将它们全部翻译成python.
我们有一个远程分支,deploy
用于构建和测试部署脚本.毫不奇怪,部署脚本最终会在一个名为的目录中deploy
.既然目录deploy
在分支中master
,那么在进行初始克隆时,实际检查该分支是很麻烦的.
$ git clone bitbucket.org:/myplace/mything
$ cd mything
$ ls
deploy extensions installExtensions src tests
$ git branch -r | grep dep
origin/deploy
$ git checkout deploy
$ git branch
* master
$ git checkout origin/deploy
Note: checking out 'origin/deploy'.
You are in 'detached HEAD' state. [SNIP]
Run Code Online (Sandbox Code Playgroud)
此时我应该创建一个名为local的分支deploy
并将其设置为跟踪远程?是否有任何语法我可以给git所以它知道我想要签出远程分支,而不是本地路径?
我已经看到了几种不同的方法来获得特定的helper
,我希望有人可以解释每种方法的优缺点.例如,template/checkout/cart/sidebar/default.phtml
你会看到两者$this->helper('checkout')
和Mage::helper('checkout')
.这两种方法在同一模板中有充分的理由吗?
以下是我在Magento找到帮手的所有不同方式:
abstract class Mage_Core_Block_Abstract extends Varien_Object
{
…
/**
* Return block helper
*
* @param string $type
* @return Mage_Core_Block_Abstract
*/
public function getHelper($type)
{
return $this->getLayout()->getBlockSingleton($type);
}
/**
* Returns helper object
*
* @param string $name
* @return Mage_Core_Block_Abstract
*/
public function helper($name)
{
if ($this->getLayout()) {
return $this->getLayout()->helper($name);
}
return Mage::helper($name);
}
…
}
class Mage_Core_Model_Layout extends Varien_Simplexml_Config
{
…
/**
* Enter description here...
*
* …
Run Code Online (Sandbox Code Playgroud) 我需要sftp服务器的密码作为我正在处理的Magento模块的配置字段.添加字段非常简单,但Magento实际上并没有因为它有一个frontend_type
而加密该值password
.
<sftp_password translate="label">
<label>SFTP Password</label>
<frontend_type>password</frontend_type>
<sort_order>170</sort_order>
<show_in_default>1</show_in_default>
<show_in_website>1</show_in_website>
<show_in_store>1</show_in_store>
</sftp_password>
Run Code Online (Sandbox Code Playgroud)
我无法找到有关如何正确加密此值的文档.如何在密码存储在数据库中时确保密码加密?
Python 具有针对容器类型的特定ABC。它说它们是,“……用于测试一个类是否提供了特定的接口。” (而且它们对某些 mixin 也很有用,但我们暂时先忽略它。)
我很难弄清楚为什么这些 ABC 中的一些真的很有用。也许我的问题只是文档中的例子太学术了,但使用这些例子:
# Verbatim
size = None
if isinstance(myvar, collections.abc.Sized):
size = len(myvar)
# Is that so much better than
size = None
if hasattr(myvar, '__len__'):
size = len(myvar)
Run Code Online (Sandbox Code Playgroud)
在第二种情况下,您避免导入并且代码对我来说似乎更明确。你可以从它的名字中推断出 collections.abc.Sized 的含义,或者查找它,但它并不像“如果它有长度,就得到它的长度”那样明确。
集合类型测试的 abc 方法真的比显式hasattr
测试更符合 Python 习惯吗?如果是,为什么?(不单纯比复杂好王牌明确优于隐含在这种情况下?)
我有视频模型:
module.exports = {
attributes: {
id: 'string',
tags: 'array'
},
}
Run Code Online (Sandbox Code Playgroud)
我想找到所有带有标签的视频,例如"Hello"或"World".我可以轻松获得所有视频:Video.find({tags:"Hello"}).我看到了搜索id:[1,2,3]的例子,但是当key(id => tags)是数组时却没有.
python ×5
magento ×2
bash ×1
boto3 ×1
branch ×1
duck-typing ×1
git ×1
idioms ×1
iteration ×1
javascript ×1
node.js ×1
ps1 ×1
pyp ×1
python-2.7 ×1
readability ×1
sails.js ×1
syntax ×1
waterline ×1