python 09

一、正则表达式

正则表达式是一个特殊的字符序列,利用事先定义好的一些特定字符以及它们的组合组成一个“规则”,检查一个字符串是否与这种规则匹配来实现对字符的过滤或匹配。正则表达式是字符串处理的有力工具,但是并不是Python独有的,其他语言也有。
Python中,re模块提供了正则表达式操作所需要的功能。
大多数字母和字符一般都会和自身匹配。如果在字符串前面加了r,表示对字符串不进行转义。有些字符比较特殊,它们和自身并不匹配,而是表明应和一些特殊的东西匹配,或者会影响重复次数。这些特殊的字符我们称之为元字符。
下面介绍常用的正则表达式元字符。
1.“.”:表示除换行符以外的任意字符
与“.”类似(但不相同)的一个符号是“\S”,表示不是空白符的任意字符。注意是大写字符S。
2.“[]”:指定字符集
常用来指定一个字符集,例如:[abc]、[a-z]、[0-9];
元字符在方括号中不起作用,例如:[akm ] 和 [ m . ] 中 元 字 符 都 不 起 作 用 ; 方 括 号 内 的 “ ” 表 示 补 集 , 匹 配 不 在 区 间 范 围 内 的 字 符 , 例 如 : [ 3 ] 表 示 除 3 以 外 的 字 符 。 3. “ ” : 匹 配 行 首 , 匹 配 以 后 面 的 字 符 开 头 的 字 符 串 4. “ ]和[m.]中元字符都不起作用; 方括号内的“^”表示补集,匹配不在区间范围内的字符,例如:[^3]表示除3以外的字符。 3.“^”:匹配行首,匹配以^后面的字符开头的字符串 4.“ ][m.][3]33.4.”:匹配行尾,匹配以$之前的字符结束的字符串
5.“\”:反斜杠后面可以加不同的字符以表示不同的特殊意义
\b匹配单词头或单词尾;
\B与\b相反,匹配非单词头或单词尾;
\d匹配任何十进制数;相当于[0-9];
\D与\d相反,匹配任何非数字字符,相当于[^0-9];
\s匹配任何空白字符,相当于[\t\n\r\f\v];
\S与\s相反,匹配任何非空白字符,相当于[^\t\n\r\f\v];
\w匹配任何字母、数字或下画线字符,相当于[a-zA-Z0-9_];
\W与\w相反,匹配任何非字母、数字和下画线字符,相当于[^a-zA-Z0-9_];
也可以用于取消所有的元字符:\、[。
这些特殊字符都可以包含在[]中。如:[\s,.]将匹配任何空白字符、",“或”."。
6.“”:匹配位于之前的字符或子模式的0次或多次出现

二、函数的定义与调用

函数是为实现一个特定功能而组合在一起的语句集,可以用来定义可重用代码、组织和简化代码。
函数定义格式如下:
def 函数名(形式参数):
函数体
函数的定义是通过参数和函数体决定函数能做什么,并没有被执行。
而函数一旦被定义,就可以在程序的任何地方被调用。
当调用一个函数时,程序控制权就会转移到被调用的函数上,真正执行该函数;
执行完函数后,被调用的函数就会将程序控制权交还给调用者。

三、函数的返回值

函数的执行结果通过返回语句return返回给调用者。
函数调用时的参数传递实现了从函数外部向函数内部输入数据,而函数的返回则解决了函数向外部输出信息的问题。
函数体中不一定有return语句。
如果一个函数的定义中没有return语句,系统将自动在函数体的末尾插入return None语句。

四、位置参数与关键参数

当调用函数时,需要将实参传递给形参。
参数传递时有两种方式:位置参数和关键参数。
位置参数是指按照参数的位置来传递
关键参数是指按照参数赋值的形式来传递
当使用位置参数时,实参和形参在顺序、个数和类型上必须一一匹配。前面示例中,调用带参数的函数时均使用位置参数的方式。

五、默认参数

函数的形参可以设置默认值。这种形参通常称为默认参数。
调用函数时如果不为默认参数提供值,这些参数就使用默认值;如果在调用时有实参,则将实参的值传递给形参,形参定义的默认值将被忽略。
具有默认参数值的函数定义格式如下:
def 函数名(非默认参数, 形参名=默认值, ……) :
函数体
函数定义时,形式参数中非默认参数与默认参数可以并存,但非默认参数之前不能有默认参数。
def sayHello(s,n=2)是有效的
def sayHello(s=“Hello!”,n)是无效的。

六、可变长度参数

如果传递的参数变量是一个不可变对象的变量,函数内部对该形参变量的任何修改都不会对调用者的实参产生影响。
如果传递的参数变量是一个可变对象的变量,函数内部对该形参变量的修改都会反馈到实参变量,函数调用结束后,实参也能看到相同的修改效果。

七、序列与字典作为参数

函数中形参与实参均为序列;
如果函数中形参是n个单变量,则在实参的序列变量名前加“”,要求实参序列中的元素个数与单变量形参个数相同;
如果实参中普通变量与序列变量混用,则以“
”为前缀的序列变量放置在实参的最后。

八、lambda函数

lambda函数是一个匿名函数,有时也被称为lambda表达式,比def格式的函数定义简单很多。Lambda函数可以接收任意多个参数,但只返回一个表达式的值。lambda中不能包含多个表达式。
lambda函数的定义格式为:
lambda 形式参数 : 表达式
其中形式参数可以有多个,它们之间用逗号隔开。表达式只有一个。返回表达式的计算结果。
以下例子中表达式左边的变量相当于给lambda函数定义了一个函数名。可以将此变量名作为函数名来调用该lambda函数。

九、函数的递归

函数内部可以调用其他函数。如果一个函数在内部直接或间接地调用自己本身,这是一种递归的方法。
一个递归调用可能导致更多的递归调用,要终止一个递归调用,必须最终递归到满足一个终止条件。
递归调用是通过栈来实现的,分为递推过程和回归过程。
每调用一次自身,把当前参数压栈,直到达到递归终止条件,这个过程叫递推过程。
当达到递归终止条件时,从栈中一一弹出当前的参数进行计算,直到栈为空,这个过程叫回归过程。
一个递归调用当达到终止条件时,就将结果返回给调用者。然后调用者进行计算并将结果返回给它自己的调用者。这个过程持续进行,直到结果被传回原始的调用者为止。
因此在编写递归函数的时候必须满足以下两点:
有明确的递归终止条件及终止时的值;
能用递归形式表示,并且向终止条件的方向发展。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值