python函数用法及自定义函数实例教程

发布时间:2019-12-20编辑:脚本学堂
有关python函数的定义与用法,以及Python自定义函数的实现方法,python自定义函数的实现细节与注意事项,自定义对象的比较,字典value值的比较等。

python简单的函数定义和用法。

例子,定义一个温度转换的函数及其用法。
 

复制代码 代码示例:
def convertTemp(temp, scale):
  if scale == "c":
   return (temp - 32.0) * (5.0/9.0)
  elif scale == "f":
   return temp * 9.0/5.0 + 32
temp = int(input("Enter a temperature: "))
scale = input("Enter the scale to convert to: ")
converted = convertTemp(temp, scale)
print("The converted temp is: " + str(converted))

-------------

python3.x中自定义比较函数

python3.x中自定义比较函数,有关自定义对象的比较、字典值value的比较方法。

在python3.x的世界里,cmp函数没有了。
那么sorted,min,max等需要比较函数作为参数的函数该如何用呢?
以min函数的定义为例,有两种重载形式:

单参数(一个迭代器):
 

min(iterable[, key=func]) -> value 

多参数(多个待比较内容):
 

min(a, b, c, ...[, key=func]) -> value 

主要讨论key=func参数的使用。

1、自定义对象的比较
定义了一个类test,有两个成员变量a和b:
 

class test: 
 def __init__(self,a,b): 
      self.a = a 
      self.b = b 

然后,实例化了三个对象x,y,z:
 

x=test(10,'x') 
y=test(2,'y') 
z=test(8,'z') 

把以变量a为标准做比较,求得a最小的对象:
 

minTest=min(x,y,z,key=lambda t:t.a) 

由于key这个参数需要传入一个函数,用lambda匿名函数很方便。本例中要实现比较函数(准确地说是比较关键字函数),故lamda的参数只要一个,随便你取什么名字(我用的是t),代表待比较的对象(即a,b,c);冒号后面是表达式,这里直接返回t的成员变量a。

于是乎,min函数(换成max,sorted等函数也是类似的)就会根据每个待比较对象的a值进行分别比较,返回a值最小的对象(的引用)赋值给minTest。
输出一下minTest.a,minTest.b就可以验证结果啦。

2、字典值value的比较

字典:
 

dic={'b':3,'a':5,'c':9,'d':2} 

根据字典的键key排序,只要:
 

sorted(dic)

返回一个list,是排序后的键,但是值没有放入list:
 

['a', 'b', 'c', 'd'] 

用以下方法:
 

>>> sorted(dic.items()) 
[('a', 5), ('b', 3), ('c', 9), ('d', 2)]

如果要根据值value排序呢?那么就传入比较函数这一参数就好啦:
 

sorted(dic.items(),key=lambda d:d[1])

继续用lambda匿名函数。
其中d表示dic.items()里的每个迭代元素,即一个元组(例如('a', 5));
表达式d[1]就是元组中的第二个元素(例如5),它也是字典的值value,需要以它为比较标准。

运行结果:
 

[('d', 2), ('b', 3), ('a', 5), ('c', 9)]