如题,欢迎讨论
1
hjq98765 2019-01-16 15:00:35 +08:00
滥用 eval 会被打
|
2
zhaishunqi 2019-01-16 15:19:22 +08:00
@hjq98765 哈哈,大神,请说出你的故事...
|
4
xpresslink 2019-01-16 16:30:43 +08:00 2
我来一个吧,独家发明,是我深入理解了 python 的对象系统以后灵感一闪写出来的。
>>> add = type('add', (int,), {'__call__':lambda o,i: add(o.numerator+i)}) >>> add(1) 1 >>> add(2) 2 >>> add(1)(2) 3 >>> add(1)(2)(3)(4) 10 >>> |
5
azuginnen 2019-01-16 16:40:18 +08:00
kwargs 好,一个调用很深的函数,上层新增一个需求,直接塞一个 kwargs,在调用链最下面取一下,做分支判断。但是这样会被项目组成员打。
如果是你个人项目,那没问题。 多用 kwargs.setdefault('', conf.xxx) |
6
azuginnen 2019-01-16 16:41:39 +08:00
还有一个 python lookup table
lookup table #function lookup table def print1(): print(1) def print2(): print(2) def print3(): print(3) def print4(): print(4) ops = { "1": print1, "2": print2, "3": print3, "4": print4, } if __name__ == '__main__': for key in ["1", "2", "3", "4"]: ops[key]() |
8
hjq98765 2019-01-16 17:20:56 +08:00
@zhaishunqi
@sidegem @mrchi 来一个我之前开脑洞写的: a = '1,2,3,4,5,6' b = eval('['+a+']') 做到了跟[int(x) for x in a.split(',')]一样的效果 |
9
ererrrr 2019-01-16 17:38:51 +08:00
都是一些旁门左道.
|
10
xpresslink 2019-01-16 17:42:01 +08:00
|
11
cominghome 2019-01-16 17:59:16 +08:00
@hjq98765 这样的代码三天后来看绝对一脸懵逼
|
12
pkoukk 2019-01-16 18:15:03 +08:00
|
13
reself 2019-01-16 18:17:21 +08:00
|
15
KgM4gLtF0shViDH3 2019-01-16 19:06:14 +08:00 via iPhone
@xpresslink #4 面试做过,当时懵逼了,现在转 go 去了😂
|
16
xpresslink 2019-01-16 19:20:50 +08:00
@cgsv 实际上那些函数名字不是相同前辍。exec('print'+key)😂
|
17
ipwx 2019-01-16 19:32:57 +08:00 2
https://github.com/haowen-xu/tfsnippet
上面是我的某项目,兼容 Python 2.7 & 3,TensorFlow 1.5 ~ 1.12 。为了达成这个目的,可谓花费不少心思。 比如以下摘自我项目的 requirements.txt: ---- backports.tempfile >= 1.0 ; python_version < '3.2' filelock >= 3.0.10 frozendict >= 1.2.0 idx2numpy >= 1.2.2 lazy-object-proxy >= 1.3.1 natsort >= 5.3.3 numpy >= 1.12.1 pathlib2 >= 2.3.0 ; python_version < '3.5' requests >= 2.18.4 scipy >= 1.2.0 semver >= 2.7.9 six >= 1.11.0 tqdm >= 4.23.0 ---- 比如我为了在 Travis CI 上测试兼容性做的 Docker 镜像: https://github.com/haowen-xu/travis-tensorflow-docker 而且做到了 99% 测试覆盖率。 ---- 等等等等细节,就不一一论述了。我的项目,完全没有四楼等各位那么炫技,但是非常朴实。 我认为这才是 Python 的真谛。 |
19
azuginnen 2019-01-16 21:21:46 +08:00
|
20
penghong 2019-01-16 21:49:54 +08:00 2
在团队协作中,可读性永远是最重要的,少用一些花里胡哨的东西。
|
21
heimafinal 2019-01-16 22:14:26 +08:00
@penghong 你说的不对
|
22
lithiumii 2019-01-16 22:53:53 +08:00
楼上各位大佬牛逼,与此同时我的代码基本上就是英语
|
23
reself 2019-01-16 23:15:11 +08:00 via Android
|
24
dudu2017 2019-01-16 23:42:07 +08:00 via iPhone
借楼问一个关于 list 排序的问题。
需求:对文件夹中的文件(包括子文件里的文件)的绝对路径需要按照字典顺序( Lexicographical Numbers )输出并且目标文件夹的的文件优先。 现在我已经利用递归把文件夹里的所有文件的路径放 list 中了,但无论如何排序都无法按照需求打印出来,问题总出现在子文件里的文件没有按要求输出或者就是目标文件里的文件后打印。 还是想用递归但没有好的想法了,困扰了一天了,来这里求助一下。谢谢🙏 |
26
wind3110991 2019-01-17 10:42:51 +08:00
在看同事代码的我:“操,这个程序怎么那么慢,不就遍历个列表么,我来看看写了些什么鬼”
代码: ''' def is_value_in_list(self, v): filter_list = self.load_db_all_list() # about 100k numbers of elements if v not in filter_list: return False return True ''' ——我日你大爷。。。 |
27
pppy OP 感觉有点跑偏了,变成了 python 奇技淫巧 🤣
|
28
zh826256645 2019-01-17 11:38:09 +08:00
初学 Python 时,让我最惊喜的是 <<Python Cookbook>>
|