Python魔法函数(特殊函数)

Python013

Python魔法函数(特殊函数),第1张

Python中如何实现运算符的重载,即实现例如a+b这样的运算符操作呢?

在C++中可以使用 operator 关键字实现运算符的重载。但是在Python中没有类似这样的关键字,所以要实现运算符的重载,就要用到Python的魔法函数。Python魔法函数是以双下划线开头,双下划线结尾的一组函数。我们在类定义中最常用到的 __init__ 函数就是这样一个魔法函数,它在创建类对象时被自动调用。

下面我们来看个简单的例子。

上述代码示例了几个魔法函数的用法。 __add__ 函数对应了二元运算符+,当执行a+b语句时,python就会自动调用a. add (b)。 对于上述例子中的v1+v2+v3,则相当于调用了(v1. add(v2)). add(v3)。

代码中还有一个在Python类定义经常使用的 __str__ 函数,当使用 str() 时会被调用。print函数对传入的参数都调用了str()将其转换成易读的字符串形式,便于打印输出,因而会调用类定义的__str__函数打出自定义的字符串。

代码中还有一个特殊的 __call__ 函数,该函数在将对象采用函数调用方式使用时被调用, 例如v1()相当于v1. call ()。

以上就是魔法函数的基本使用方法。常见的魔法函数我们可以使用 dir() 函数来查看。

输出结果为:

上述结果中形式为‘__函数名__’的函数为魔法函数,注意有些对象也是这种形式,例如__class__, __module__等, 这些不是魔法函数。具体的魔法函数说明可以参考Python官方说明文档。

以上代码在Python3.6运行通过.

可以把list,tuple,dict和string相互转化。

1、字符串转换成列表

>>>a = "[[1,2], [3,4], [5,6], [7,8], [9,0]]"

>>>type(a)

>>>b = eval(a)

>>>print b[[1, 2], [3, 4], [5, 6], [7, 8], [9, 0]]

>>>type(b)

2、字符串转换成字典

>>>a = "{1: 'a', 2: 'b'}"

>>>type(a)

>>>b = eval(a)

>>>print b{1: 'a', 2: 'b'}

>>>type(b)

3、字符串转换成元组

>>>a = "([1,2], [3,4], [5,6], [7,8], (9,0))"

>>>type(a)

>>>b = eval(a)

>>>print b([1, 2], [3, 4], [5, 6], [7, 8], (9, 0))

>>>type(b)

4、eval()函数传进去的参数必须是字符串或者是对象

示例1:

>>>a=10

>>>print(eval("a+1"))

>>>执行结果: 11

示例2:

>>>a=10

>>>g={'a':4}

>>>print(eval("a+1",g))

>>>执行结果:5

示例3:

>>>a=10

>>>b=20

>>>c=30

>>>g={'a':6,'b':8}

>>>t={'b':100,'c':10}

>>>print(eval('a+b+c',g,t))

>>>执行结果:116  (a=6, b=100, c=10)

5、eval函数,eval去除引号后会检查到它是不是可计算的,如果可计算会将计算的结果打印出来,如果不可计算直接返回结果

示例1:不可计算》》》直接输出结果

>>>s='["a","b","c"]'

>>>print(eval(s))

>>>执行结果: ['a', 'b', 'c']

示例2:表达式可计算》》》计算之后输出结果

>>>s='abs(-10)'  

>>>print(eval(s))

>>>输出结果:10 

5、eval()函数,功能是将string变成算术表达式来执行

示例1:

>>>eval("1+2")

>>>执行结果: 3

示例2:

>>>eval("print(\"hello, world\")")

>>>输出结果:hello, world

Pos()功能在一个字符串中查找所包含的另一个字符串的起始位置。语法Pos ( string1, string2 {, start } )

参数string1:string类型,指定要从中查找子串string2的字符串string2:string类型,指定要在string1中查找的字符串start:long类型,可选项,指定从string1的第几个字符开始查找。缺省值为1返回值Long。函数执行成功时返回在start位置后string2在string1中第一次出现的起始位置。如果在string1中按指定要求未找到string2、或start的值超过了string1的长度,那么Pos()函数返回0。如果任何参数的值为NULL,Pos()函数返回NULL。用法Pos()函数在字符串查找时区分大小写,因此,"aa"不匹配"AA"。

拓展资料:

公式的运用

一、数字处理

1、取绝对值函数

公式:=ABS(数字)

2、取整函数

公式:=INT(数字)

3、四舍五入函数

公式:=ROUND(数字,小数位数)

二、判断公式

1、如果计算的结果值错误那么显示为空

公式:=IFERROR(数字/数字,)

说明:如果计算的结果错误则显示为空,否则正常显示。

2、IF语句的多条件判定及返回值

公式:IF(AND(单元格(逻辑运算符)数值,指定单元格=返回值1),返回值2,)

说明:所有条件同时成立时用AND,任一个成立用OR函数。

三、常用的统计公式

1、统计在两个表格中相同的内容

公式:B2=COUNTIF(数据源:位置,指定的,目标位置)

说明:如果返回值大于0说明在另一个表中存在,0则不存在。

如果,在此示例中所用到的公式为:B2=COUNTIF(Sheet15!A:A,A2)

2、统计不重复的总数据

公式:C2=SUMPRODUCT(1/COUNTIF(A2:A8,A2:A8))

说明:用COUNTIF函数统计出源数据中每人的出现次数,并用1除的方式把变成分数,最后再相加。

四、数据求和公式

1、隔列求和的应用

公式:H3=SUMIF($A$2:$G$2,H$2,A3:G3)或=SUMPRODUCT((MOD(COLUMN(B3:G3),2)=0)*B3:G3)

说明:如果在标题行中没有规则就可以用第2个公式

2、单条件应用之求和

公式:F2=SUMIF(A:A,C:C)

说明:这是SUMIF函数的最基础的用法

五、查找与引用公式

1、单条件查找

说明:VLOOKUP是excel中最常用的查找方式

六、字符串处理公式

1、多单元格字符串的合并

说明:Phonetic函数只能合并字符型数据,不能合并数值。

2、截取结果3位之外的部分

说明:LEN计算总长度,LEFT从左边截总长度-3个。