首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

系统补白:流畅的python(1)

流畅的python

对于发展迅速的组织来说,python可以极大地提高生产力。

比如:我可以5行代码爬取豆瓣电影排行前25的电影:

初学者学Python,不但入门容易,而且将来深入下去,可以编写那些非常非常复杂的程序。

那Python适合开发哪些类型的应用呢?

首选是网络应用,包括网站、后台服务等等;

其次是许多日常需要的小工具,包括系统管理员需要的脚本任务等等;

另外就是把其他语言开发的程序再包装起来,方便使用。

任何编程语言都有缺点,Python也不例外。优点说过了,那Python有哪些缺点呢?

第一个缺点就是运行速度慢,和C程序相比非常慢,因为Python是解释型语言,你的代码在执行时会一行一行地翻译成CPU能理解的机器码,这个翻译过程非常耗时,所以很慢。而C程序是运行前直接编译成CPU能执行的机器码,所以非常快。

但是大量的应用程序不需要这么快的运行速度,因为用户根本感觉不出来。

第二个缺点就是代码不能加密。如果要发布你的Python程序,实际上就是发布源代码,这一点跟C语言不同,C语言不用发布源代码,只需要把编译后的机器码(也就是你在Windows上常见的xxx.exe文件)发布出去。要从机器码反推出C代码是不可能的,所以,凡是编译型的语言,都没有这个问题,而解释型的语言,则必须把源码发布出去。

这个缺点仅限于你要编写的软件需要卖给别人挣钱的时候。好消息是目前的互联网时代,靠卖软件授权的商业模式越来越少了,靠网站和移动应用卖服务的模式越来越多了,后一种模式不需要把源码给别人。

再说了,现在如火如荼的开源运动和互联网自由开放的精神是一致的,互联网上有无数非常优秀的像Linux一样的开源代码,我们千万不要高估自己写的代码真的有非常大的“商业价值”。那些大公司的代码不愿意开放的更重要的原因是代码写得太烂了,一旦开源,就没人敢用他们的产品了。

瑕不掩瑜。python确实是简洁,可读性高。适用于大多数场景的语言。

结果输出了一首诗:

总的来说,Python的哲学就是简单优雅,尽量写容易看明白的代码,尽量写少的代码。如果一个资深程序员向你炫耀他写的晦涩难懂、动不动就几万行的代码,你可以尽情地嘲笑他。

诗里这些哲学观点贯穿整个语言本身。

搭环境

去https://www.python.org/downloads/windows/

安装anaconda:anaconda是针对科学计算设计的多合一安装包,它已经内置了许多非常有用的第三方库,我们装上Anaconda,就相当于把数十个第三方模块自动安装好了,非常简单易用。

此外pip是python的第三方包管理工具。

数据类型

包括:

布尔型(True/False)

整型

浮点型(小数或科学计数法)

字符串

变量与命名

python是强类型语言。永远不可更改声明后的变量类型

计算式

表示整数除法

表示取幂

可对浮点数或字符串数字进行四舍五入取整, 反之

字符串

可输出多行文本

方法可将其它类型转化为字符串

字符串可以通过 进行复制

和列表类似可通过中括号提取。

把链表合并为字符串:

案例:字符串分析与排版

以莎士比亚诗歌为例,分析以下字符串:

正是:

恋雨偏打伞,爱阳却遮凉。风来掩窗扉,叶公惊龙王。片言只语短,相思缱倦长。郎君说爱我,不敢细思量。

复杂数据

列表和元组

二者都是有序结构,前者以中括号包裹,可变,后者用小括号包裹,不可变。

元组可以以 方法转化为列表

列表的截取方法和字符串一致。

append(xxx):添加至尾部

extend(xxx):合并衔接两个列表

insert(index,xxx):插入

del list(index):删除指定位置

pop(index):获取同时从原列表删除

list.remove(xxx):删除列表中指定值

index(index):查询指定值位置

count(xxx):记录xxx出现的位置

深度拷贝用

xxx in list :判断xxx是否在列表

sort()和sorted(list)都是字典排序,前者改变原数组内容,后者不会,并能返回一个新数组。

字典

创建字典可以直接赋值 。也可以通过 转换。

obj.update(obj2)可合并两个字典,重复键名时,以参数中的键值为准。

delete(key)可删除字典中指定的键值对

clear():清除所有

key in obj 判断是否存在此键

keys()返回所有键

values返回所有值

items():以列表套元组的形式返回所有键值对

copy也可以深度拷贝字典

集合

集合就像舍弃了值的字典,可以通过set方法创建,set一个列表,返回的可以是不重复的所有集合

in可以判断某个值是否存在于集合中

取交集

去差集

取并集

取亦或集(仅在两个集合中出现一次)

可判断前者是否为后者的真子集,后者称为前者的真超集

代码结构

一般补白

注释用的是

python代码结构严格依赖缩进。如果一行太长,可用 断行。

选择结构: 、 、

假值:False,None,0,0.0,'',[].(),{},set()

除此之外全是真值。

编写文档:你在写一个方法时,通常要写帮助文档。python可以很友好地创建文档:

列表迭代

for循环比while循环更常用。

打断循环。 跳到循环开始

循环外使用else:表示循环没有结束时做出的处置。

迭代:

迭代:类似于切片(range(start,end,step )):

推导

列表推导一般格式:

多层嵌套的列表推导,比如打印一串4*3的数据:

字典推导

比如说我要统计一个字符串不同字母的出现次数:

集合推导

函数

一个函数如不显式调用 它将返回一个

位置参数的缺点在于,难以缺省,因此可以给定值,也可以设置缺省值。

收集位置参数:

生成器的自定义

对生成器进行迭代时,会记录上次访问的位置,不使用 而使用

比如说我要自定义一个生成器实现和range一样的功能:

装饰器

有时候不想修改源代码,但想知道一个函数里究竟是什么,包含哪些参数。这是可以给它外包一层装饰器

我们定义一个装饰器:

和文档一样,函数也有一个内置的属性

作用域与闭包

在一个函数中获取一个全局变量时很容易的。这在哪个语言中都是如此。

但在python中,一个函数尝试改变全局变量,则会失败。你需要这样写:

所谓“明了胜于隐晦”,你要取什么命名空间的变量,都有方法任意自取之

locals() 局部命名空间的字典

globals全局命名空间的字典

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181224G1CEN500?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券