如何在Python中创建两个装饰器来执行以下操作?
@makebold
@makeitalic
def say():
return "Hello"
Run Code Online (Sandbox Code Playgroud)
...应该返回:
"<b><i>Hello</i></b>"
Run Code Online (Sandbox Code Playgroud)
我不是试图HTML在一个真实的应用程序中这样做 - 只是试图了解装饰器和装饰器链是如何工作的.
len()Python内置函数的功能成本是多少?(列表/元组/串/字典)
if hasattr(obj, 'attribute'):
# do somthing
Run Code Online (Sandbox Code Playgroud)
VS
try:
# access obj.attribute
except AttributeError, e:
# deal with AttributeError
Run Code Online (Sandbox Code Playgroud)
哪个应该是首选,为什么?
在PHP中使用单例而不是全局的数据库连接有什么好处?我觉得使用单例而不是全局会使代码变得不必要地复杂化.
$conn = new PDO(...);
function getSomething()
{
global $conn;
.
.
.
}
Run Code Online (Sandbox Code Playgroud)
class DB_Instance
{
private static $db;
public static function getDBO()
{
if (!self::$db)
self::$db = new PDO(...);
return self::$db;
}
}
function getSomething()
{
$conn = DB_Instance::getDBO();
.
.
.
}
Run Code Online (Sandbox Code Playgroud)
如果有一种更好的方法来初始化除全局或单例之外的数据库连接,请提及它并描述它相对于全局或单例的优势.
如果它很短,我会保持单线.最近我一直在使用这种风格用于更长或嵌套的三元运算符表达式.一个人为的例子:
$value = ( $a == $b )
? 'true value # 1'
: ( $a == $c )
? 'true value # 2'
: 'false value';
Run Code Online (Sandbox Code Playgroud)
个人你使用哪种风格,或找到最可读的?
编辑:( 何时使用三元运算符)
我通常避免使用超过2级深度三元运算符.当我在PHP模板脚本中回显变量时,我倾向于更喜欢2级深度三元运算符而不是2级.
我怎样才能确定我的应用程序是否在开发服务器上运行?我想,我可以检查的价值settings.DEBUG,并假设如果DEBUG是True那么它的开发服务器上运行,但我更愿意知道肯定不是依靠惯例.
在PHP中,我会这样做以获得name数组.
<input type"text" name="name[]" />
<input type"text" name="name[]" />
Run Code Online (Sandbox Code Playgroud)
或者,如果我想name作为关联数组:
<input type"text" name="name[first]" />
<input type"text" name="name[last]" />
Run Code Online (Sandbox Code Playgroud)
什么是Django相当于这样的东西?
如果我有一个列表,其中包含一个看起来像这样的列表......
['a',1] ['a',2] ['a',3] ['b',1] ['b',2] ['b',3]
Run Code Online (Sandbox Code Playgroud)
我如何对它们进行排序,以便元素0按降序排序,元素1按升序排序,因此结果看起来像......
['b',1] ['b',2] ['b',3] ['a',1] ['a',2] ['a',3]
Run Code Online (Sandbox Code Playgroud)
使用itemgetter我可以在元素0上反向传递,但是我然后使用元素,当然它会破坏前一种类型.我不能做一个组合键,因为它需要先降序然后升序.
TIA,PK
我该怎么做才能防止slugify过滤器剥离非ASCII字母数字字符?(我正在使用Django 1.0.2)
cnprog.com有问题URL中的中文字符,所以我查看了他们的代码.他们没有slugify在模板中使用,而是在Question模型中调用此方法来获取永久链接
def get_absolute_url(self):
return '%s%s' % (reverse('question', args=[self.id]), self.title)
Run Code Online (Sandbox Code Playgroud)
他们是否在诋毁网址?
我知道Django 1.1有一些新的聚合方法.但是我无法弄清楚以下查询的等价物:
SELECT player_type, COUNT(*) FROM players GROUP BY player_type;
Run Code Online (Sandbox Code Playgroud)
是否可以使用Django 1.1的Model Query API,还是应该使用纯SQL?