张飞软硬开源基于STM32 BLDC直流无刷电机驱动器开发视频套件,👉戳此立抢👈

如何让你的Python代码竟优雅又地道

马哥Linux运维 2019-02-03 12:35 次阅读
如果说优雅也有缺点的话,那就是你需要艰巨的工作才能得到它,需要良好的教育才能欣赏它。 —— Edsger Wybe Dijkstra Python社区文化的浇灌下,演化出了一种独特的代码风格,去指导如何正确地使用Python,这就是常说的pythonic。一般说地道(idiomatic)的python代码,就是指这份代码很pythonic。Python的语法和标准库设计,处处契合着pythonic的思想。而且Python社区十分注重编码风格一的一致性,他们极力推行和处处实践着pythonic。所以经常能看到基于某份代码P vs NP (pythonic vs non-pythonic)的讨论。pythonic的代码简练,明确,优雅,绝大部分时候执行效率高。阅读pythonic的代码能体会到“代码是写给人看的,只是顺便让机器能运行”畅快。 然而什么是pythonic,就像什么是地道的汉语一样,切实存在但标准模糊。import this可以看到Tim Peters提出的Python之禅,它提供了指导思想。许多初学者都看过它,深深赞同它的理念,但是实践起来又无从下手。PEP 8给出的不过是编码规范,对于实践pythonic还远远不够。如果你正被如何写出pythonic的代码而困扰,或许这份笔记能给你帮助。 Raymond Hettinger是Python核心开发者,本文提到的许多特性都是他开发的。同时他也是Python社区热忱的布道师,不遗余力地传授pythonic之道。这篇文章是网友Jeff Paine整理的他在2013年美国的PyCon的演讲的笔记。 如何让你的Python代码竟优雅又地道 术语澄清:本文所说的集合全都指collection,而不是set。 以下是正文。 本文是Raymond Hettinger在2013年美国PyCon演讲的笔记(视频, 幻灯片)。 示例代码和引用的语录都来自Raymond的演讲。这是我按我的理解整理出来的,希望你们理解起来跟我一样顺畅! 遍历一个范围内的数字 foriin[0,1,2,3,4,5]: printi ** 2 foriinrange(6): printi ** 2 更好的方法 foriinxrange(6): printi ** 2 xrange会返回一个迭代器,用来一次一个值地遍历一个范围。这种方式会比range更省内存。xrange在Python 3中已经改名为range。 遍历一个集合 colors = ['red','green','blue','yellow'] foriinrange(len(colors)): print colors[i] 更好的方法 forcolor incolors: print color 反向遍历 colors = ['red','green','blue','yellow'] foriinrange(len(colors)-1, -1, -1): print colors[i] 更好的方法 forcolor inreversed(colors): print color 遍历一个集合及其下标 colors = ['red','green','blue','yellow'] foriinrange(len(colors)): printi,'--->',colors[i] 更好的方法 fori,color inenumerate(colors): printi,'--->',color 这种写法效率高,优雅,而且帮你省去亲自创建和自增下标。 当你发现你在操作集合的下标时,你很有可能在做错事。 遍历两个集合 names = ['raymond','rachel','matthew'] colors = ['red','green','blue','yellow'] n = min(len(names),len(colors)) foriinrange(n): print names[i],'--->',colors[i] forname,color inzip(names,colors): print name,'--->',color 更好的方法 forname,color inizip(names,colors): print name,'--->',color zip在内存中生成一个新的列表,需要更多的内存。izip比zip效率更高。 注意:在Python 3中,izip改名为zip,并替换了原来的zip成为内置函数。 有序地遍历 colors = ['red','green','blue','yellow'] # 正序 forcolor insorted(colors): print colors # 倒序 forcolor insorted(colors,reverse=True): print colors 自定义排序顺序 colors = ['red','green','blue','yellow'] def compare_length(c1,c2): iflen(c1) < len(c2): return -1 iflen(c1) > len(c2): return1 return0 print sorted(colors,cmp=compare_length) 更好的方法 print sorted(colors, key=len) 第一种方法效率低而且写起来很不爽。另外,Python 3已经不支持比较函数了。 调用一个函数直到遇到标记值 blocks = [] whileTrue: block = f.read(32) ifblock == '': break blocks.append(block) 更好的方法 blocks = [] forblock initer(partial(f.read,32),''): blocks.append(block) iter接受两个参数。第一个是你反复调用的函数,第二个是标记值。 译注:这个例子里不太能看出来方法二的优势,甚至觉得partial让代码可读性更差了。方法二的优势在于iter的返回值是个迭代器,迭代器能用在各种地方,set,sorted,min,max,heapq,sum…… 在循环内识别多个退出点 def find(seq,target): found = False fori,value inenumerate(seq): ifvalue == target: found = True break ifnotfound: return -1 returni 更好的方法 def find(seq,target): fori,value inenumerate(seq): ifvalue == target: break else: return -1 returni for执行完所有的循环后就会执行else。 译注:刚了解for-else语法时会困惑,什么情况下会执行到else里。有两种方法去理解else。传统的方法是把for看作if,当for后面的条件为False时执行else。其实条件为False时,就是for循环没被break出去,把所有循环都跑完的时候。所以另一种方法就是把else记成nobreak,当for没有被break,那么循环结束时会进入到else。 遍历字典的key d = {'matthew': 'blue','rachel': 'green','raymond': 'red'} forkind: printk forkind.keys(): ifk.startswith('r'): deld[k] 什么时候应该使用第二种而不是第一种方法?当你需要修改字典的时候。 如果你在迭代一个东西的时候修改它,那就是在冒天下之大不韪,接下来发生什么都活该。 d.keys()把字典里所有的key都复制到一个列表里。然后你就可以修改字典了。 注意:如果在Python 3里迭代一个字典你得显示地写:list(d.keys()),因为d.keys()返回的是一个“字典视图”(一个提供字典key的动态视图的迭代器)。详情请看文档。 遍历一个字典的key和value # 并不快,每次必须要重新哈希并做一次查找 forkind: printk,'--->',d[k] # 产生一个很大的列表 fork,vind.items(): printk,'--->',v 更好的方法 fork,vind.iteritems(): printk,'--->',v iteritems()更好是因为它返回了一个迭代器。 注意:Python 3已经没有iteritems()了,items()的行为和iteritems()很接近。详情请看文档。 用key-value对构建字典 names = ['raymond','rachel','matthew'] colors = ['red','green','blue'] d = dict(izip(names,colors)) # {'matthew': 'blue', 'rachel': 'green', 'raymond': 'red'} Python 3: d = dict(zip(names, colors)) 用字典计数 colors = ['red','green','red','blue','green','red'] # 简单,基本的计数方法。适合初学者起步时学习。 d = {} forcolor incolors: ifcolor notind: d[color] = 0 d[color] += 1 # {'blue': 1, 'green': 2, 'red': 3} 更好的方法 d = {} forcolor incolors: d[color] = d.get(color,0) + 1 # 稍微潮点的方法,但有些坑需要注意,适合熟练的老手。 d = defaultdict(int) forcolor incolors: d[color] += 1 用字典分组 — 第I部分和第II部分 names = ['raymond','rachel','matthew','roger', 'betty','melissa','judith','charlie'] # 在这个例子,我们按name的长度分组 d = {} forname innames: key = len(name) ifkey notind: d[key] = [] d[key].append(name) # {5: ['roger', 'betty'], 6: ['rachel', 'judith'], 7: ['raymond', 'matthew', 'melissa', 'charlie']} d = {} forname innames: key = len(name) d.setdefault(key,[]).append(name) 更好的方法 d = defaultdict(list) forname innames: key = len(name) d[key].append(name) 字典的popitem()是原子的吗? d = {'matthew': 'blue','rachel': 'green','raymond': 'red'} whiled: key,value = d.popitem() print key,'-->',value popitem是原子的,所以多线程的时候没必要用包着它。 连接字典 defaults = {'color': 'red','user': 'guest'} parser = argparse.ArgumentParser() parser.add_argument('-u','--user') parser.add_argument('-c','--color') namespace = parser.parse_args([]) command_line_args = {k: vfork,vinvars(namespace).items()ifv} # 下面是通常的作法,默认使用第一个字典,接着用环境变量覆盖它,最后用命令行参数覆盖它。 # 然而不幸的是,这种方法拷贝数据太疯狂。 d = defaults.copy() d.update(os.environ) d.update(command_line_args) 更好的方法 d = ChainMap(command_line_args, os.environ, defaults) ChainMap在Python 3中加入。高效而优雅。 提高可读性 位置参数和下标很漂亮 但关键字和名称更好 第一种方法对计算机来说很便利 第二种方法和人类思考方式一致 用关键字参数提高函数调用的可读性 twitter_search('@obama', False, 20, True) 更好的方法 twitter_search('@obama', retweets=False, numtweets=20, popular=True) 第二种方法稍微(微秒级)慢一点,但为了代码的可读性和开发时间,值得。 用namedtuple提高多个返回值的可读性 # 老的testmod返回值 doctest.testmod() # (0, 4) # 测试结果是好是坏?你看不出来,因为返回值不清晰。 更好的方法 # 新的testmod返回值, 一个namedtuple doctest.testmod() # TestResults(failed=0, attempted=4) namedtuple是tuple的子类,所以仍适用正常的元组操作,但它更友好。 创建一个nametuple TestResults = namedTuple('TestResults', ['failed', 'attempted']) unpack序列 p = 'Raymond','Hettinger',0x30,'python@example.com' # 其它语言的常用方法/习惯 fname = p[0] lname = p[1] age = p[2] email = p[3] 更好的方法 fname, lname, age, email = p 第二种方法用了unpack元组,更快,可读性更好。 更新多个变量的状态 def fibonacci(n): x = 0 y = 1 foriinrange(n): printx t = y y = x + y x = t 更好的方法 def fibonacci(n): x,y = 0,1 foriinrange(n): printx x,y = y,x + y 第一种方法的问题 x和y是状态,状态应该在一次操作中更新,分几行的话状态会互相对不上,这经常是bug的源头。 操作有顺序要求 太底层太细节 第二种方法抽象层级更高,没有操作顺序出错的风险而且更效率更高。 同时状态更新 tmp_x = x + dx *t tmp_y = y + dy *t tmp_dx = influence(m,x,y,dx,dy,partial='x') tmp_dy = influence(m,x,y,dx,dy,partial='y') x = tmp_x y = tmp_y dx = tmp_dx dy = tmp_dy 更好的方法 x,y,dx,dy = (x + dx *t, y + dy *t, influence(m,x,y,dx,dy,partial='x'), influence(m,x,y,dx,dy,partial='y')) 效率 优化的基本原则 除非必要,别无故移动数据 稍微注意一下用线性的操作取代O(n**2)的操作 总的来说,不要无故移动数据 连接字符串 names = ['raymond','rachel','matthew','roger', 'betty','melissa','judith','charlie'] s = names[0] forname innames[1:]: s += ', ' + name prints 更好的方法 print ', '.join(names) 更新序列 names = ['raymond','rachel','matthew','roger', 'betty','melissa','judith','charlie'] del names[0] # 下面的代码标志着你用错了数据结构 names.pop(0) names.insert(0,'mark') 更好的方法 names = deque(['raymond','rachel','matthew','roger', 'betty','melissa','judith','charlie']) # 用deque更有效率 del names[0] names.popleft() names.appendleft('mark') 装饰器和上下文管理 用于把业务和管理的逻辑分开 分解代码和提高代码重用性的干净优雅的好工具 起个好名字很关键 记住蜘蛛侠的格言:能力越大,责任越大 使用装饰器分离出管理逻辑 # 混着业务和管理逻辑,无法重用 def web_lookup(url,saved={}): ifurl insaved: returnsaved[url] page = urllib.urlopen(url).read() saved[url] = page returnpage 更好的方法 @cache def web_lookup(url): returnurllib.urlopen(url).read() 注意:Python 3.2开始加入了functools.lru_cache解决这个问题。 分离临时上下文 # 保存旧的,创建新的 old_context = getcontext().copy() getcontext().prec = 50 print Decimal(355) / Decimal(113) setcontext(old_context) 更好的方法 with localcontext(Context(prec=50)): print Decimal(355) / Decimal(113) 译注:示例代码在使用标准库decimal,这个库已经实现好了localcontext。 如何打开关闭文件 f = open('data.txt') try: data = f.read() finally: f.close() 更好的方法 with open('data.txt')asf: data = f.read() 如何使用锁 # 创建锁 lock = threading.Lock() # 使用锁的老方法 lock.acquire() try: print'Critical section 1' print'Critical section 2' finally: lock.release() 更好的方法 # 使用锁的新方法 with lock: print'Critical section 1' print'Critical section 2' 分离出临时的上下文 try: os.remove('somefile.tmp') except OSError: pass 更好的方法 with ignored(OSError): os.remove('somefile.tmp') ignored是Python 3.4加入的, 文档。 注意:ignored 实际上在标准库叫suppress(译注:contextlib.supress). 试试创建你自己的ignored上下文管理器。 @contextmanager def ignored(*exceptions): try: yield except exceptions: pass 把它放在你的工具目录,你也可以忽略异常 译注:contextmanager在标准库contextlib中,通过装饰生成器函数,省去用__enter__和__exit__写上下文管理器。详情请看文档。 分离临时上下文 # 临时把标准输出重定向到一个文件,然后再恢复正常 with open('help.txt','w')asf: oldstdout = sys.stdout sys.stdout = f try: help(pow) finally: sys.stdout = oldstdout 更好的写法 with open('help.txt','w')asf: with redirect_stdout(f): help(pow) redirect_stdout在Python 3.4加入(译注:contextlib.redirect_stdout), bug反馈。 实现你自己的redirect_stdout上下文管理器。 @contextmanager def redirect_stdout(fileobj): oldstdout = sys.stdout sys.stdout = fileobj try: yield fieldobj finally: sys.stdout = oldstdout 简洁的单句表达 两个冲突的原则: 一行不要有太多逻辑 不要把单一的想法拆分成多个部分 Raymond的原则: 一行代码的逻辑等价于一句自然语言 列表解析和生成器 result = [] foriinrange(10): s = i ** 2 result.append(s) print sum(result) 更好的方法 print sum(i**2 for i in xrange(10)) 第一种方法说的是你在做什么,第二种方法说的是你想要什么。
原文标题:让你的 Python 代码优雅又地道 文章出处:【微信号:magedu-Linux,微信公众号:马哥Linux运维】欢迎添加关注!文章转载请注明出处。
收藏 人收藏
分享:

评论

相关推荐

明德扬FPGA开发板培训华为设计经典笔试面试xilinx视频教程altera

  FPGA笔试面试教程1.本课程共包括40个视频内容,全由潘老师主讲2.本课程基于至简设计法思想,明德扬的特
发表于 01-23 00:00 945次 阅读
明德扬FPGA开发板培训华为设计经典笔试面试xilinx视频教程altera

Python程序中添加代理信息代码示例

[color=rgba(0, 0, 0, 0.87)][size=1.28]requests[backcolor=rgba(236, 236, 236, 0.5)][backcolor=rgba(0, 0, 0, 0.54)][size=1...
发表于 03-19 17:00 75次 阅读
Python程序中添加代理信息代码示例

学Excel还是 R、Python?机器学习怎么入门?

数据科学家分为两个职业。数据工程师为模型提供可用的数据,机器学习和数学建模涉及比较少,这些工作主要由....
的头像 电子发烧友网工程师 发表于 03-19 15:46 62次 阅读
学Excel还是 R、Python?机器学习怎么入门?

计算机视觉开源库集锦

Dlib是一个现代的C++工具包,包含机器学习算法和工具,用于在C++中创建复杂的软件来解决实际问题....
的头像 电子发烧友网工程师 发表于 03-19 11:48 100次 阅读
计算机视觉开源库集锦

2019年最值得关注的34个Python开源项目——Let's go!

是 Google 专为 NISQ 算法打造的框架,用于创建、编辑和调用嘈杂中型量子 (NISQ,No....
的头像 电子发烧友网工程师 发表于 03-19 10:37 128次 阅读
2019年最值得关注的34个Python开源项目——Let's go!

用Python带领大家一起探索这些诱人的奖金背后的秘密!

但为什么每期双色球一等奖奖金不是固定的呢!就是因为其奖金机制,双色球当期销售额的51%作为当期奖金!....
的头像 电子发烧友网工程师 发表于 03-19 10:29 85次 阅读
用Python带领大家一起探索这些诱人的奖金背后的秘密!

一个国外小哥用好几年时间维护的Python代码合集

因为在学习写代码的过程中,我们应该尽量避免重复。写代码不像背单词,你只要知道一门编程语言能干什么,等....
的头像 电子发烧友网工程师 发表于 03-19 10:24 109次 阅读
一个国外小哥用好几年时间维护的Python代码合集

【PYNQ-Z2试用体验】基于PYNQ-Z2的神经网络图形识别[结项]

前言前面我们简单讲解了神经网络的基本概念和工作原理,接下来,将通过具体的python代码来完成基于神经网络的图形识别。这里使用...
发表于 03-18 21:51 93次 阅读
【PYNQ-Z2试用体验】基于PYNQ-Z2的神经网络图形识别[结项]

编程特长生享受一本降30分,保送北大清华政策

一位妈妈诉苦,说她家孩子中考那半年,每天都早起晚睡地复习,全家都跟着一起紧张。结果只考进一个普通高中....
的头像 电子发烧友网工程师 发表于 03-18 16:41 102次 阅读
编程特长生享受一本降30分,保送北大清华政策

使用Gokit4(G)开发板遇到的问题及处理方法

Gokit4(G)开发板使用小结
发表于 03-18 12:43 15次 阅读
使用Gokit4(G)开发板遇到的问题及处理方法

R和Python到底谁更好如何将Python与R同时应用在同一个项目

如果你从事在数据科学领域,提到编程语言,一定能马上想到 R 语言和 Python语言(以下分别简称 ....
的头像 电子发烧友网工程师 发表于 03-17 10:35 214次 阅读
R和Python到底谁更好如何将Python与R同时应用在同一个项目

2019年的编程语言排行榜你知道吗

TIOBE 公布了2019年3月编程语言排行榜,排名前十的依然是:Java, C, Python, ....
的头像 电子发烧友网工程师 发表于 03-17 10:13 488次 阅读
2019年的编程语言排行榜你知道吗

人工智能风口捆绑在一起的Python,似乎从来不缺热度

横向与其他技术岗位相比,Python这样的薪资涨幅也算得上是表现突出。下图显示,Python在201....
的头像 电子发烧友网工程师 发表于 03-16 09:53 249次 阅读
人工智能风口捆绑在一起的Python,似乎从来不缺热度

PYNQ中MicroBlaze程序文件的加载过程

在PYNQ的base overlay 中添加了MicroBlaze,通过MicroBlaze 来配置....
发表于 03-16 09:15 40次 阅读
PYNQ中MicroBlaze程序文件的加载过程

编程语言流行指数排行榜近日公布了2019年2月份榜单

圈内知名网站Stack Overflow的数据显示,其实早在去年6月份,Python的月活用户就已超....
的头像 电子发烧友网工程师 发表于 03-15 09:48 246次 阅读
编程语言流行指数排行榜近日公布了2019年2月份榜单

一个关于超越的编程大赛怎么可以专属的编程语言呢?

今天重点说说你们使用的编程语言,尤其值得一提的是 Python,至于为什么是 Python?这个后面....
的头像 电子发烧友网工程师 发表于 03-15 09:40 338次 阅读
一个关于超越的编程大赛怎么可以专属的编程语言呢?

你知道为什么Julia的速度能做到那么快吗?

一般来说,Julia 中的数学运算与其他脚本语言中的数学运算看起来是一样的。它们的数字都是 “真正的....
的头像 新智元 发表于 03-15 09:10 127次 阅读
你知道为什么Julia的速度能做到那么快吗?

PIC32MX370f512H如何使用脱轨通信将消息传送给控制器

我使用PIC32 MX370F512H控制器和专用工具通过串行通信与PC机通信。每次进行增量更新时,我们都会运行一些基本的测试用例...
发表于 03-14 20:02 32次 阅读
PIC32MX370f512H如何使用脱轨通信将消息传送给控制器

算法科普:有趣的霍夫曼编码

霍夫曼编码 ( Huffman coding ) 是一种可变长的前缀码。霍夫曼编码使用的算法是 Da....
的头像 算法与数据结构 发表于 03-14 19:24 501次 阅读
算法科普:有趣的霍夫曼编码

PHP如何打开一个页面执行另一个页面的代码

一般php程序必须是在浏览器打开页面的时候触发执行的,用下面的方法,可以在A页面启动B页面的php程....
发表于 03-14 17:17 20次 阅读
PHP如何打开一个页面执行另一个页面的代码

入门有必要选择STM32Cube HAL库开发吗?

所以,我的建议是:如果你数据结构功底不好,可以先从寄存器、标准外设库开始,当你基础知识累计一定程度,....
的头像 嵌入式资讯精选 发表于 03-14 13:53 142次 阅读
入门有必要选择STM32Cube HAL库开发吗?

盘点“杨超越杯编程大赛”中那些脑洞大开的项目

你知道杨超越的粉丝们有多努力吗!
的头像 人工智能爱好者社区 发表于 03-13 15:17 419次 阅读
盘点“杨超越杯编程大赛”中那些脑洞大开的项目

如何更改代码编辑窗口的字体类型和大小

是否有人告诉我如何更改代码编辑窗口的字体类型和大小。 干杯 以上来自于百度翻译      以下为原...
发表于 03-13 13:41 217次 阅读
如何更改代码编辑窗口的字体类型和大小

代码输入正确但是不显示

是软件bug吗
发表于 03-13 11:40 82次 阅读
代码输入正确但是不显示

比较5种人工智能项目最常用的编程语言

有人认为Lisp是最好的人工智能编程语言,因为它为开发人员提供了自由。在人工智能中使用Lisp,因其....
的头像 电子发烧友网 发表于 03-13 09:59 356次 阅读
比较5种人工智能项目最常用的编程语言

ICML 2019的评审结果已经出来了,你们提交代码了吗?

其实由于随机初始化等机制缺乏可复现性,早期的神经网络研究并不受欢迎。虽然,目前证明神经网络的表征能力....
的头像 电子发烧友网工程师 发表于 03-12 14:10 175次 阅读
ICML 2019的评审结果已经出来了,你们提交代码了吗?

如何用Python Ginkgo USB-CAN发送和接收数据

Python版本:硬件版本3.5.3两套Ginkgo USB-CAN 接口:VTG203B 硬件连接:ITEM1   ITEM2CAN1 H...
发表于 03-12 10:32 58次 阅读
如何用Python Ginkgo USB-CAN发送和接收数据

请问哪位大神能看懂下面这段代码是什么意思吗?

void UART0_sendchar(uint32_t disp) {         uint32_t dispbuf[8];    &nbs...
发表于 03-12 01:51 30次 阅读
请问哪位大神能看懂下面这段代码是什么意思吗?

一些你应该了解的Python功能特色

大多Python函数有着长且具有描述性的名字。但是命名为glob()的函数你可能不知道它是干什么的除....
的头像 马哥Linux运维 发表于 03-11 15:53 196次 阅读
一些你应该了解的Python功能特色

编译器可以为你生成高性能的代码,但是你真的需要编译器吗?

当我们用数字运行时,我们可以得到数字。但我们想要代码,因此,我们需要制作一个假装成数字的对象(Obj....
的头像 电子发烧友网工程师 发表于 03-11 09:35 228次 阅读
编译器可以为你生成高性能的代码,但是你真的需要编译器吗?

Python如何爬取实时变化的WebSocket数据

Python 中的网络请求库非常多,Requests 是最常用的请求库之一,它可以模拟发送网络请求。....
的头像 电子发烧友网工程师 发表于 03-11 09:31 261次 阅读
Python如何爬取实时变化的WebSocket数据

Python入门教程之可爱的Python PDF版电子书免费下载

笔者自 2000 年接触 Python 到现在,一直对 Python 的兴趣和信心有增无减。但 Py....
发表于 03-11 08:00 52次 阅读
Python入门教程之可爱的Python PDF版电子书免费下载

在大型项目开发上,Python真是个“烂”语言!

我们内部数据统计,通过大把(千万级)的简历分析得到的结果:部分大项目不用Python,是因为相比之下....
的头像 电子发烧友网工程师 发表于 03-10 10:21 493次 阅读
在大型项目开发上,Python真是个“烂”语言!

TensorFlow 2.0 alpha提供即将发生的变化的预览

要快速上手 TensorFlow 2.0 Alpha 版,最佳途径是前往 TensorFlow 的新....
的头像 电子发烧友网工程师 发表于 03-10 10:17 449次 阅读
TensorFlow 2.0 alpha提供即将发生的变化的预览

一个专门关于Python的面试题汇总,为什么推荐这份资源?

除了题量充足外,这个面试题覆盖的知识点按照由易到难罗列,分为【Python 基础】与【Python ....
的头像 电子发烧友网工程师 发表于 03-10 10:12 258次 阅读
一个专门关于Python的面试题汇总,为什么推荐这份资源?

CSDN为所有感兴趣的开发者提供了一个探讨和学习Python的契机

1989 年,为了打发无所事事的圣诞节假期,Guido 开始写 Python 语言的编译/解释器,P....
的头像 电子发烧友网工程师 发表于 03-10 10:03 493次 阅读
CSDN为所有感兴趣的开发者提供了一个探讨和学习Python的契机

数据分析奥斯卡女神们,谁是你心中的No.1?

奥黛丽·赫本在榜单中的位置体现了她在观众心中无可替代的地位,赫本年轻时用出众的容貌和演技一次次在电影....
的头像 电子发烧友网工程师 发表于 03-10 09:56 396次 阅读
数据分析奥斯卡女神们,谁是你心中的No.1?

如何破解Jetbrains旗下软件永久破解方法说明

做Java开发和Python开发的人,或多或少知晓其对应的IDE,IntelliJ IDEA和Pyc....
的头像 电子发烧友网工程师 发表于 03-09 09:33 318次 阅读
如何破解Jetbrains旗下软件永久破解方法说明

因代码不规范,程序员枪击4名同事,一个用生命维护代码的程序员

本周,一名程序员在WTS Paradigm这家美国企业资源规划软件(ERP)开发商的办公楼持枪杀人。
的头像 单片机精讲吴鉴鹰 发表于 03-08 10:53 711次 阅读
因代码不规范,程序员枪击4名同事,一个用生命维护代码的程序员

像在word里一样便捷地编辑图像中的文字

近日来自印度的研究人员们近日提出了一种基于自编码模型的字符替换方法,通过字符生成、颜色调节和重置完成....
的头像 将门创投 发表于 03-08 09:38 182次 阅读
像在word里一样便捷地编辑图像中的文字

机器学习实战PDF中文版电子书免费下载

机器学习是人工智能研究领域中的一个极其重要的方向。在现今大数据时代的背景下捕获数据并从中萃取有价值的....
发表于 03-08 08:00 63次 阅读
机器学习实战PDF中文版电子书免费下载

慢慢探秘Matplotlib的强大之处

添加标题添加标题可以通过title函数来实现,该函数主要有两个参数,第一个是str,指明标题的内容,....
的头像 电子发烧友网工程师 发表于 03-07 14:41 218次 阅读
慢慢探秘Matplotlib的强大之处

需要日期代码信息

嗨, 需要帮助根据图片中的物理部分提供有关日期代码信息的建议。 请查看随附的照片&amp; 紧急建议。 谢谢。 以上来自于...
发表于 03-07 13:41 43次 阅读
需要日期代码信息

为什么数据分析师都要求写代码?

分析软件每开发出一个新功能需要大量投入。而Python作为编程语言,开发新工具相对容易,一个人开发一....
的头像 电子发烧友网工程师 发表于 03-06 14:21 377次 阅读
为什么数据分析师都要求写代码?

谷歌的中国版搜索引擎还没完?代码400多次更新,Dragonfly还在运作?

国外媒体The Intercept报道,谷歌内部员工在12月发现了大约500个代码更改,并且在今年1....
的头像 新智元 发表于 03-06 09:18 363次 阅读
谷歌的中国版搜索引擎还没完?代码400多次更新,Dragonfly还在运作?

Google C++编程风格指南PDF版免费下载

Google的项目大多使用C++开发。每一个C++程序员也都知道, C++具有很多强大的语言特性,但....
发表于 03-06 08:00 33次 阅读
Google C++编程风格指南PDF版免费下载

教你用Python做一个特别的表白礼物

30秒教会你用Python制作520表白神器
发表于 03-06 06:12 45次 阅读
教你用Python做一个特别的表白礼物

如何将自己的脚本代码放到服务器上运行

连接服务器可以在这个页面的右边的远程连接进行连接,这个第一次点进去会有个远程连接密码,需要记住,因为....
的头像 电子发烧友网工程师 发表于 03-05 09:41 526次 阅读
如何将自己的脚本代码放到服务器上运行

设置“音乐AI”博士点有无必要?

除了算法模型训练等技术问题,另一更重要的挑战是缺乏音乐数据,知乎网友@吴俣提到,相比语言模型较易获取....
的头像 电子发烧友网工程师 发表于 03-05 09:36 653次 阅读
设置“音乐AI”博士点有无必要?

python入门教程简明Python教程中文版免费下载

Python 可能是极少数既简单有强大的编程语言中的一种。这对初学者和专家都是好事,更重要的是,用它....
发表于 03-05 08:00 62次 阅读
python入门教程简明Python教程中文版免费下载

Python机器学习基础教程PDF版电子书免费下载

本书是机器学习入门书,以 Python 语言介绍。主要内容包括 :机器学习的基本概念及其应用 ;实践....
发表于 03-04 08:00 100次 阅读
Python机器学习基础教程PDF版电子书免费下载

如何学习自然语言处理NLP详细学习方法说明

这篇文章是一名自然语言处理(nlp)的初学者,在nlp里摸爬滚打了许久的一些心得,推荐了nlp的学习....
的头像 人工智能爱好者社区 发表于 03-03 11:05 310次 阅读
如何学习自然语言处理NLP详细学习方法说明

代码实例及详细资料带你入门Python数据挖掘与机器学习

本文结合代码实例待你上手python数据挖掘和机器学习技术。 本文包含了五个知识点: 1. ....
的头像 马哥Linux运维 发表于 03-03 10:10 388次 阅读
代码实例及详细资料带你入门Python数据挖掘与机器学习

让你学写Python装饰器的五大理由

你必须学写Python装饰器的五个理由
的头像 马哥Linux运维 发表于 03-02 10:06 248次 阅读
让你学写Python装饰器的五大理由

GitHub搜索代码的操作步骤

GitHub 在开源世界的受欢迎程度自不必多言。再加上前阵子,GitHub 官方又搞了个大新闻:私有....
的头像 RTThread物联网操作系统 发表于 03-02 09:47 216次 阅读
GitHub搜索代码的操作步骤

Python开发人员年度调查来了!

在我们的调查中,84%的 Python 用户使用 Python 作为他们的主要语言,而 16%的用户....
的头像 新智元 发表于 03-02 09:23 301次 阅读
Python开发人员年度调查来了!

怎么用Python制作自己的专属表情包?

不要和会Python的人斗图!
的头像 马哥Linux运维 发表于 03-01 17:31 710次 阅读
怎么用Python制作自己的专属表情包?

linux很安全?输入这几行代码轻松侵入

写个php一句话后门上去:[jobcruit@wa64-054 rankup_log]$ echo ....
的头像 马哥Linux运维 发表于 03-01 17:10 574次 阅读
linux很安全?输入这几行代码轻松侵入