人生苦短,我用Python!Python是一门代表简单思想的语言,语法比较简单,容易学习。然而,低估Python语法的精妙和深度将是一个很大的错误。在RPA设计中,一些简单的代码编写是在所难免的。本文精心挑选了几个最能展现Python语法精妙之处的知识点。如果能将它们集成起来,灵活使用,代码会更加精炼和高效。大大改进了B码格式,看起来更精致,读起来更优雅。1.for-否则呢?不是说if和else是原来的匹配吗?不,你可能不知道,else是个双刃剑,for和else也是一对,而且合法:foriin[1,2,3,4]:print(i)else:print('Iamelse')如果有第三方if介入for和else之间(循环体),则不会影响for和else之间的关系。因为for的层次比if高,else是个执着于权势的家伙,根本不关心有没有if,满足if条件的语句有没有执行。else眼里只有for,只要for执行成功,else就会从头再来一遍:foriin[1,2,3,4]:ifi>2:print(i)else:print('Iamelse'),当然从缩进就可以看出来:那么,如何拆开for和else这对呢?只有当for循环被break语句打断时,else语句才会被跳过:foriin[1,2,3,4]:ifi>2:print(i)breakelse:print('Iamelse')2。一颗星()和两颗星(*)大家有没有发现,星号(*)真是一个神奇的符号!想一想,没有它,C语言还有什么乐趣?同样,也正因为有它,Python才如此优雅、婉约、迷人!Python函数支持默认参数和可变参数。一颗星表示无限个单值参数,两颗星表示无限个键值对参数。让我们用一个例子来说明:设计一个返回多个输入值之和的函数。当然,我们可以将这些输入值做成一个列表,传递给函数,但是这种方式远不如使用星形变量参数优雅:defmulti_sum(*args):s=0foriteminargs:s+=itemreturns>>>multi_sum(3,4,5)Python函数允许全部或部分固定参数、默认参数、单值(一颗星)可变参数、键值对(两颗星)可变参数同时,使用时必须按前述顺序书写。defdo_something(name,age,gender='male',*args,**kwds):print('Name:%s,age:%d,gender:%s'%(name,age,gender))print(args)print(kwds)>>>do_something('xufive',50,'male',175,75,math=99,english=90)name:xufive,age:50,gender:male(175,75){'math':99,'english':90}另外,一颗星和两颗星还可以用于解包列表、元组和字典,看起来更像C语言:>>>a=(1,2,3)>>>打印(a)(1,2,3)>>>打印(*a)123>>>b=[1,2,3]>>>打印(b)[1,2,3]>>>print(*b)123>>>c={'name':'xufive','age':51}>>>print(c){'name':'xufive','年龄':51}>>>print(*c)nameage>>>print('name:{name},age:{age}'.format(**c))name:xufive,age:513.三元表达式如inif:>>>y=5>>>ify<0:print('yisanegativenumber')else:print('yisanon-negativenumber')yisanon-负数下面看一下三元表达式的具体用法:>>>y=5>>>print('y是一个负数'ify<0else'y是一个非负数')yisa非负python三元表达式也可以用于赋值:>>>y=5>>>x=-1ify<0else1>>>x4。with-aswith语句适用于一些需要提前准备,需要事后处理的任务,比如对文件的操作,需要先打开文件,操作完成后需要关闭文件.:\CSDN\Column\temp\mpmap.py",'r')try:contents=fp.readlines()finally:fp.close()如果用with-as,就优雅多了:>>>withopen(r"D:\CSDN\Column\temp\mpmap.py",'r')asfp:contents=fp.readlines()5.Listcomprehension列表推导在各种奇葩语法中的使用频率应该是最高,对代码的简化效果也很明显,比如求一个列表中每个元素的平方,通常应该这样写(当然也有其他的写法,比如用映射函数):>>>a=[1,2,3,4,5]>>>result=list()>>>foriina:result.append(i*i)>>>result[1,4,9,16,25]如果你使用列表理解,它看起来更舒服:>>>a=[1,2,3,4,5]>>>result=[i*iforiina]>>>result[1,4,9,16,25]免费下载试用:https://support.i-search.com.cn/
