直播成长社贺岁版—Python编程快速上手

Python

编程

段星读书分享

Python编程快速上手

脚本语言的实用性很强,有的时候一下简单模块或者一些重复性工作,使用脚本来完成往往事半功倍,尤其在Linux环境下,缺少图形界面,脚本成了最有利的工具,shell,python等脚本在linux下处处都是。

接触了多种语言后,尤其时对于不熟悉的语言总是将它们的语法弄混乱,所以打算从基础开始做一段整体的学习,让自己熟悉它,也从中培养自己快速学习与运用的能力。

首先是基础语法,与C++做对比,多重条件判断使用and、or、not做与、或、非的条件组合,if/elif/else做条件判断,使用冒号结束。

代码块,c++中使用{ } 来确定代码块,比如函数代码块,或者条件判断的代码块,而python语法中,缩进规则严格,使用相同的缩进来确定代码块,所以如果不注意缩进就可能出现一些意想不到的错误。

强制转换,str()、int()、float(),三个函数基本满足一些字符串与数字之间的转换,做日志输出的时候一般会用上。

Python

编程

段星读书分享

Python编程快速上手

None在python中与其他语言的null、nil、undefined相似,表示没有值,对于python中的所有函数,如果没有return语句,那么默认python会在末尾加上return None。

global语句,在python语法里,因为变量名可以直接赋值,不需要像类似C++里的变量声明,所以赋值语句的出现在函数中可能意味着创建局部变量,如果想使用全局变量,需要在函数开始的地方,使用global varname,来告诉程序这里使用的是全局变量。

try: ... except : ...语句处理异常。一旦try语句块内发生错误,那么错误之后的属于try语句块的函数不再执行,直接跳转到except处理。

in 和 not in,可用于判断元素是否在列表里。'x' in ['x', 'y', 'z'] True

python代码缩进的例外,python以缩进判断代码块,对于列表是个例外,例如:

spam = ['2',

'3',

'4']

python找到方括号的结束,才知道列表结束了。还有一种例外是使用\,来分割单行,使用这种方式来让过长的代码分开,以保证更好的阅读。

tuple和list,tuple元组表示不可变的一组数据使用(),list列表是一组可变的数据使用[ ],为了与括号区分开,只有一个元素的元组应该在元素后使用逗号表示这是一个元组,例如('hello',)。元组与列表可以使用list()和tuple()函数进行相互转换。

Python

编程

段星读书分享

Python编程快速上手

引用,python里的list和dict在做赋值操作时,使用的是引用的方式,如果不知道这一点,可能很容易发生错误。如果需要对列表或字典做拷贝就需要使用copy模块的copy函数和deepcopy函数,使用copy.copy是将列表或字典做拷贝,但如果列表里面有列表的情况,拷贝之后的列表里存的依然是之前列表里的列表引用,使用copy.deepcopy可以连列表里的列表也一并做拷贝。

字典dict,是键值对的形式的数据存储,key无序。

字符串,python中支持单引号、双引号、三重引号进行字符串标记,个别字符转义使用\,还可以使用r'string'表示字符串内的字符全部无转义。常用字符串函数可以帮助我们减少很多字符串的处理工作,startswith(), endswith(), split(), isalpha(), isalnum(), isdecimal(), isspace(), isupper(), islower(), strip(), rstrip(), lstrip().

Python

编程

段星读书分享

Python编程快速上手

正则表达式,一种高级的字符串匹配方式,使用正则表达式,可以很容易帮助我们在字符串中匹配我们想获得的某种格式的字符串。python中使用正则表达式,引入re模块,使用re.complie(r'\d\d')获得Regex对象,然后使用Regex对象调用search获取匹配到的Match对象,常用的正则表达式规则:

1.使用()进行匹配分组

2. 使用 | 管道匹配多个表达式中的一个

3. 使用?匹配可选部分,也可表示非贪心匹配,python的正则表达式默认为贪心的,匹配尽可能长的字符串

4.使用 * 表示匹配零次或多次

5 使用 + 表示匹配一次以上

6. 使用{}匹配特定次数

7. 使用[]建立自己的字符分类进行匹配

8. 使用 ^ 匹配字符串头,或者对[]字符分类进行反向匹配,[^aeiou]表示匹配a、e、i、o、u之外的字符

9. 使用$ 匹配字符串末尾

Python

编程

段星读书分享

Python编程快速上手

文件处理中对路径的处理在不同的系统平台下,路径分割符号是不相同的,windows使用\,而linux下使用/,在做文件访问或者路径的拼接时,最好使用os.path模块里的join函数,可以进行路径拼接,自动返回合适的拼接之后的路径名称。

异常处理,对代码中可能出现的异常应该进行提前防范,防止程序停止工作,使用try: ... except ... : ... 进行异常的处理,自己编写异常代码时,使用raise进行异常抛出。发生异常时,在对异常进行处理的同时,还可以使用traceback模块,将调用堆栈输出到日志,traceback.format_exc()。

日志模块,使用logging模块进行日志打印,logging模块很方便进行日志打印,并可以设定日志级别,从低到高依次是DEBUG、INFO、WARNING、ERROR、CRITICAL,比如使用logging.error('error string'),在不需要日志时,使用logging.disable(logging.CRITICAL)禁用所有日志,disable函数禁用传入日志级别及以下的所有日志。

Python

编程

段星读书分享

Python编程快速上手

列表生成式是Python内置的简单强大的创建列表的语法,可以使用很少的代码就能完成复杂的列表生成,减少繁琐的工作。比如产生从1到10的平方的列表,可以这样的语句一行搞定,[x * x for x in range(1, 11)]。另外,列表生成式还支持条件判断作筛选,比如,[x * x for x in range(1, 11) if x % 2 == 0]。也支持多层循环,比如:

[x * y for x in range(1, 11) for y in range(1, 11)]。

生成器generator,可以对表达式逐个计算返回计算结果,创建一个generator有很多种方法,简单的一种就是将列表生成式的[]改成()即可得到一个生成器,使用next(generator)函数可以返回生成器计算一次的结果,调用第二次产生第二个,在超出生成器范围时会抛出StopIteration的错误,所以一般可以使用for 循环进行生成器的遍历。另外,在函数中使用yield关键字,那么这个函数不再是普通函数,而是变成了一个生成器,每调用一次函数执行到一个yield返回,下一次调用继续执行到下一个yield处返回。

Python

编程

段星读书分享

Python编程快速上手

模块封装,python中可以自己封装自己的模块,在封装时需要注意模块名称与系统已有模块不要重复,另外,如果有重复也可以使用目录来进行模块组织,目录下需要有__init__.py,如果没有,那么python将其视为普通目录,__init__.py可以是空文件也可以有python代码,__init__.py代表当前目录的模块。

if __name__ == '__main__':

当命令行执行python脚本时,python会将特殊变量__name__变量设置为'__main__',所以当判断__name__为'__main__'时,说明该python脚本是被命令行直接执行,而通过import引入时,不会进入这一条件。这可以使得我们可以在python脚本里明确区分运行代码和接口,同时在if __name__=='__main__':也可以非常方便地进行模块测试,而不对模块导入产生影响。

Python

编程

段星读书分享

Python编程快速上手

类,与C++相似,python中定义类使用class关键字,比如: class Player(object):

定义一个player类,从object类继承,也支持多重继承,比如,class Dog(object, Animal): 定义Dog类,继承自object和Animal。对于类的方法,第一个参数都使用self,代表对象自身,用self来访问对象自身的成员,python中没有完善的机制保证类成员让用户无法从外部访问,只有约定俗成的一些规矩,比如,使用单下划线_开始函数或者变量,表示该成员外部可以访问但不推荐使用,使用双下划线__开始的成员,表示私有变量,比如这样的一个类:

class Student(object):

def __init__(self, name):

self.__name = name

s = Student('xiaoming')

当用户尝试使用s.__name去访问__name变量时,会提示类中无此变量,但实际上这只是一种障眼法,python实际处理这样的变量时,只是将它进行了改名,所以当我们使用s.__name去访问时提示没有,我们仍然可以使用s._Student__name去访问。

在python中,类的属性和类实例的属性都是可以随时变化的,可以随时添加属性或者使用del 删除属性,实例的属性优先与类的属性。

直播成长社|读书分享

  • 发表于:
  • 原文链接:http://kuaibao.qq.com/s/20180211B0IFVG00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

同媒体快讯

扫码关注云+社区

领取腾讯云代金券