我是靠谱客的博主 健康红牛,最近开发中收集的这篇文章主要介绍程序员写的python代码_WTF?能把Python代码写得这么优雅的都是神仙程序员吧!,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

“人生苦短,我用Python”,说的就是Python开发“快”的优势,相同的代码量能够完成其他语言数倍代码量的任务。一般情况下,像C++、C、JAVA 、GO这类编译型语言要比PHP、Python、JavaScript这类解释性语言要快一些,但是各有各的优势。

Python以其开发方便、语言生态健全,乘着人工智能之风很快成为了一门明星语言。使用Python提升开发效率的同时,代码的运行效率却没那么高。下面将介绍几种简单的方法,尝试提升代码的可读性、执行效率。

一、优化编程惯例

1)用生成式生成列表:

假设我们正在编写爬虫,现在需要将解析到的信息生成列表。不优雅的方法:

#假设有列表一

list1 = ['a', 'b', 'c', 'd', 'e', 'f', 'g']

#先定义一个空列表

list2 = []

for i in list1:

list2.append(i)

print(list2)

得到:[‘a’, ‘b’, ‘c’, ‘d’, ‘e’, ‘f’, ‘g’]用生成式更加优雅的完成:

#假设有列表一

list1 = ['a', 'b', 'c', 'd', 'e', 'f', 'g']

list2 = [i for i in list1]

print(list2)

输出:[‘a’, ‘b’, ‘c’, ‘d’, ‘e’, ‘f’, ‘g’]

2)使用enumerate进行迭代:

enumerate方法用于将一个可遍历的数据对象组合为一个索引序列,同时输出数据和数据下标,一般用于for循环之中,演示如下:不优雅的方法:

bat = ['张一鸣', '马云', '马化腾']

num = 1

for i in bat:

print(num,i)

num += 1

输出:

0 张一鸣

1 马云

2 马化腾

优雅的方法,使用enumerate函数:

bat = ['张一鸣', '马云', '马化腾']

for n, i in enumerate(bat):

print(n,i) #输出结果同上

3)用join方法生成字符串:

join()函数能够将序列中的元素按照给定的字符链接生成一个新的字符串。不好的代码:

str1 = ['我', '在', '知', '了', '课', '堂', '学' , 'Python']

str2 = ''

for i in str1:

str2 = str2 + i + '-'

print(str2)

输出:我-在-知-了-课-堂-学-Python-使用join方法:

str1 = ['我', '在', '知', '了', '课', '堂', '学' , 'Python']

str2 = '-'.join(str1)

print(str2)

输出:我-在-知-了-课-堂-学-Python

4)不适用临时变量交换两个值:

a, b = b, a

5)使用:

if __name__ == '__main__':

二、使用Cython模块提升代码执行速度

Python有着良好的扩展性与接口功能,人工智能大多数库都是C++或者C写来由Python调用。大公司会使用Python来提升开发效率,用C来弥补性能缺口。在Python官方文档中,也给出了Python的C API接口的文档,但是下面也标注了“给 C/C++ 程序员的参考手册”,绝非等闲之辈能轻易掌握!好消息是,有Cython模块,官方是这样介绍的(翻译):[Cython]是一种编程语言,它使编写Python语言的C扩展与Python本身一样容易。它旨在成为[Python]语言的超集,从而为它提供高级,面向对象,功能和动态编程。

Cython是Python编译器。这意味着它可以编译普通的Python代码而无需进行更改(除了一些尚不支持的语言功能的明显例外),接下来使用Cython提升Python执行速度。

1)安装:

使用cython最简单的方法是执行

pip install Cython

也可以从https://cython.org/下载最新版本 。解压缩tarball或zip文件,输入目录,然后运行:

python setup.py install

另外需要安装gcc,linux下一般自带。

2)Hello, Cython:

使用官方推荐的方法(使用setuptools)构建我们的代码,创建hello.pyx文件(你没看错,不是.py而是.pyx)并键入:

def say_hello_to(name):

print("Hello %s!" % name)

创建对应的setup.py脚本:

from setuptools import setup

from Cython.Build import cythonize

setup(

name='Hello world app',

ext_modules=cythonize("hello.pyx"),

zip_safe=False,

)

cmd到当前目录,执行:

![5](C:UsersLookCosDesktop文章5.png)python setup.py build_ext --inplace

gcc与g++都安装但是,报错,缺乏 Microsoft visual C++ 14.0,遂下载安装:

4GB!太大了,用linux试试!

在centos环境下,重复上述步骤:

成功,并且生成了一个hello.cpython-36m-x86_64-linux-gnu.so文件, 在Windows下会生成.pyd文件。

使用:

from hello import say_hello

say_hello_to("zhiliao") #成功使用该方法

hon VS Python :

斐波那契数列,通俗易懂,使用Python容易实现,也考验计算能力。我们分别用Python和cython来计算斐波那契第38项的值,同一台机器,看谁算的快!使用Python:创建fib1.py并键入:

import time

#创建一个计算斐波那契数列的方法

def fib(n):

if n in [1, 2]:

return 1

return fib(n-1) + fib(n-2)

start = time.time() #获取计算前时间戳

fib(38) #计算

end = time.time() #计算结束时间戳

print("耗时{}秒".format(end-start))

成绩:11.73秒

使用Cython:

创建一个fib2.pyx并键入:

#创建一个计算斐波那契数列的方法

def fib(n):

if n in [1, 2]:

return 1

return fib(n-1) + fib(n-2)

创建相应的setup.py:

from setuptools import setup

from Cython.Build import cythonize

setup(

name='Hello world app',

ext_modules=cythonize("fib2.pyx"), #注意修改文件名

zip_safe=False,

)

执行:

python3 setup.py build_ext --inplace

建立测试文件test.py:

import time

from fib2 import fib

start = time.time() #获取计算前时间戳

fib(38) #计算

end = time.time() #计算结束时间戳

print("耗时{}秒".format(end-start))

成绩,2.20秒

awesome!快了5倍多,实际上随着项的增大,成绩还会有所提升。

使用cython不仅能够大幅提升代码的运行速度,还能够起到加密核心代码的作用,即便是被对手入侵了服务器,也不必担心核心代码泄露。

三、使用科学计算库

知名的科学计算库如numpy、pandas等底层都使用C++、C完成,这在一定程度上保证了执行速度,另一方面也能帮助我们提升可读性。我们分别用numpy和传统的**方法来计算一个数组的乘方,

import time

import numpy as np

#定义一个大数组

arr_list = list(range(10000000))

np_start = time.time()

np_list = np.array(arr_list)

res = np_list ** 2

np_end = time.time()

def pow2(x):

return x ** 2

#使用**方法

py_start = time.time()

res1 = [pow2(i) for i in arr_list]

py_end = time.time()

print("numpy用时{0}秒n **用时{1}秒".format(np_end - np_start, py_end - py_start))

很给力,快了数倍:

numpy用时0.5964438915252686秒

**用时4.138192176818848秒

相信,不断的优化我们的编程习惯,像写诗一样写代码,养成良好科学的计算习惯,一定能够写出pythonic代码!更多干货内容,欢迎关注公众号:知了python

最后

以上就是健康红牛为你收集整理的程序员写的python代码_WTF?能把Python代码写得这么优雅的都是神仙程序员吧!的全部内容,希望文章能够帮你解决程序员写的python代码_WTF?能把Python代码写得这么优雅的都是神仙程序员吧!所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(45)

评论列表共有 0 条评论

立即
投稿
返回
顶部