1
Js 2013-04-04 12:15:33 +08:00 4
port = [80, 8080][settings.DEBUG]
这样就对等了..... |
2
binux 2013-04-04 12:19:01 +08:00
port = settings.DEBUG ? 8080 : 80
你就开心了? |
3
TankyWoo 2013-04-04 13:15:09 +08:00
要想80感觉正常,8080感觉非正常,就
port = 80 if not settings.DEBUG else 8080 |
4
reorx 2013-04-04 13:41:31 +08:00
有个一般不用的做法,不过可能楼主会喜欢: port = settings.DEBUG and 8080 or 80
注意 and 后面的值的布尔值不能为 False,否则它的结果就和 ? : 不完全一样了。 |
5
archsocks 2013-04-04 18:15:28 +08:00
@TankyWoo 要反写条件感觉不爽,且要多打一个not
实在想不通python把其中一个值放到条件之前是出于什么目的啊!人为地制造不平等。 我觉得这样就很好: port = if (settings.DEBUG) 8080 else 80 |
7
Hualin 2013-04-04 19:11:27 +08:00
英语国家的人就是那么说话的,你看到的数学书证明部分 if else 也是布置的。正经事不干瞎操心啥 =.=
|
8
wenbinwu 2013-04-04 19:51:41 +08:00
settings.DEBUG and 8080 or 80
|
9
jimrok 2013-04-05 22:16:15 +08:00
ruby port = if settings.DEBUG
8080 else 80 end |
10
Parallel 2013-04-05 22:21:20 +08:00
我想吐槽一下那个列表推导式,就是那个轻量级的循环。。全部挤在一行,个人觉得一点也不美观。。
|
12
rephaslife 2013-04-05 22:40:57 +08:00 1
反正我觉得挺正常的,Python目的是“像写英语一样写代码”。
@Parallel 其实这样挺好的,简洁,就是必须在[]里使用有些蛋疼。。比如下面的代码就会出错: {a for a in list: a} 就算这样也会报错: {a for a in list} |
13
Parallel 2013-04-06 10:43:23 +08:00
@reusFork 你是说在[]里写成几行那样?
@rephaslife 我觉得在里面写可读性不强,就比如《可爱的python》里那个计算闰年的程序result2 = [ p for p in range(2, N) if 0 not in [ p% d for d in range(2, int(sqrt(p))+1)] ]。 |
16
hexor 2013-04-06 12:31:00 +08:00
条件语句请不要写成一行啊... 混蛋
|
17
swulling 2013-04-06 12:33:39 +08:00
|
18
swulling 2013-04-06 12:37:45 +08:00
@Parallel 实际用起来超好用的,如果你非常讨厌这种写法,会变的有点丑。
result2 = [ p for p in range(2, N) if 0 not in [ p% d for d in range(2, int(sqrt(p))+1)] ] --- result2 = [] for p in range(2,N): ____tmp = [] ____for d in range(2,int(sqrt(p))+1)): ________tmp.append(p%d) ____if 0 not in tmp: ________result2.append(p) |
19
holsety 2013-04-06 12:46:44 +08:00
还有一种写法是:
port = settings.DEBUG and 8080 or 80 当然,8080不能为False,None等非True值,要不然上面这个不成立. |
20
Parallel 2013-04-06 12:51:42 +08:00
@swulling 事实上只需要这样就可以了:
result1 = [] for num in range(2, N): __for snu in range(2, int(sqrt(num))+1): ____if num % snu == 0: ______break __else: ____result1.append(num) 可能是我不大习惯那样子吧,也许以后习惯了就好。 |
21
brucex 2013-04-06 13:03:03 +08:00
@rephaslife 你没有理解列表推导的实质,(a for a in list)会产生一个可迭代对象,你可以把它当成是一个生成器,如果你要得到一个Dict,你应该这样写{(a,a) for a in list)},如果要得到一个Set,应该写作set(a for a in list)。
|