python学习(二)函数
来源:互联网 发布:网络电视选择哪个信源 编辑:程序博客网 时间:2024/04/29 02:59
创建一个函数
通过def关键字可以创建一个函数
def addNumber(firstNumber,secondNumber) : return firstNumber + secondNumberprint "addNumber(2, 3) = "+str(addNumber(2, 3)) #输出: addNumber(2, 3) = 5
另外系统为我们提供了很多函数,我们可以在命令行下通过help()来查看其功能和需要的参数
可变参数
def changeArgs(* args): sum = 0 for x in args: sum = sum + x; return sumprint changeArgs(1,3,6,9) # 输出: 19
使用元组来返回多个值
在python中,我们可以使用元组来返回多个值
def addAndLess(firstNumber,secondNumber): return (firstNumber + secondNumber,firstNumber - secondNumber)addResult , lessResult = addAndLess(22,11)print "addResult is :"+str(addResult) + " lessResult is :"+str(lessResult) #输出:addResult is :33 lessResult is :11
python中默认的参数
在python中,可以给函数提供一个默认值,如果没有传入参数,则使用该默认的参数
def funDefaultParam(strOne = "hello",strTwo = "world"): return strOne + strTwoprint funDefaultParam() # 输出: helloworldprint funDefaultParam(strTwo="xiaoming") #指定参数对应的是那个型参 输出:helloxiaomingprint funDefaultParam(strOne="nihao",) # 输出: nihaoworld
使用global语句改变全局变量的值
#可以使用global语句,在函数体中,改变全局变量的值number = 22def changeNumber(): global number number = number + 2 return numberprint "changeNumber():"+str(changeNumber()) # 输出: changeNumber():24
python中的数据类型转换
print int("11")print float("22")print bool("1")print bool("")
方法重新命名
另外可以为一个指定的方法重新命名,然后可以直接调用
selfMax = max;print selfMax(44,77)
python中的迭代和循环
使用range函数来创建个列表,默认的间隔是1
print range(1,10) # [1, 2, 3, 4, 5, 6, 7, 8, 9]
间隔为3,创建一个1-10的列表
print range(1,10,3) # [1, 4, 7]
for语句迭代循环
在python中,可以使用for语句迭代循环各种对象。包括字符串,列表,字典,和文件
#遍历字符串a = "get away here"for x in a : print x#遍历列表b = ["aaa","bbb","ccc"]for x in b : print x#遍历字典c = { 11 : "one", "name" : 22 }for x in c : print c[x]
python中的异常
在python中和java是一样的,如果程序出现异常,那么可以捕获异常,在python中,可以使用:
try: xxxxexcept Exception as e: print e
这样的形式捕获异常
也可以向java那样,手动抛出异常,在python中使用raise关键字:
raise RuntimeError("raise an exception")
捕获异常
from symbol import except_clause, if_stmtfrom locale import strtry: file = open("/local/temp/no.txt") for line in file: print lineexcept IOError as e: print "没有找到文件"
主动抛出异常
def devideMethod(numberOne,numberTwo): if numberTwo == 0: raise RuntimeError("被除数不能是0") else : print "the result is :"+str(numberOne / numberTwo)devideMethod(5,0)
python中的对象
在python中使用的所有的值都是对象
通过dir()函数来列出某个对象的所有可用的方法
items = ["aaa","bbb","ccc"]print dir(items)"""['__add__', '__class__', '__contains__', '__delattr__', '__delitem__', '__delslice__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getslice__', '__gt__', '__hash__', '__iadd__', '__imul__', '__init__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__rmul__', '__setattr__', '__setitem__', '__setslice__', '__sizeof__', '__str__', '__subclasshook__', 'append', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort']"""
python创建类
#创建一个具有加法和sayhello功能的类class MyClass(object): def __init__(self,name): self.name = name def addNumber(self,numberOne,numberTwo): print numberOne + numberTwo def say(self, sex): if sex == "man" : print self.name + "先生" elif sex == "woman": print self.name + "女士"myClass = MyClass("小明")myClass.addNumber(22,33)myClass.say("woman")
python静态方法
#在python中也可以写上向java中的静态方法,需要在方法名之前加上@staticmethod这样的关键字class MyStaticClass(object): @staticmethod def staticSayHello(): print "hello world"MyStaticClass.staticSayHello()
函数的文档
#coding=utf-8"""如果模块、类或者函数定义的第一条语句是一个字符串,那么这个字符串就成为了其文档可以通过这样的方式来查看其文档:"""def sayHello(): """这是方法的文档,用来说明方法的功能""" print "hello world..."print sayHello.__doc__
python中的模块
在python中,同样和java一样,当文件很多的时候,可以将这些文件放入到一个文件夹里边,然后使用import关键字来导入这些文件,为了说明问题,这里我在同一个包下创建两个文件
- add.py
#coding=utf-8def sayHello(): print "hello world"def sayName(realName): print "your name is :"+realName
- userAdd.py
"""在python中,同样和java一样,当文件很多的时候,可以将这些文件放入到一个文件夹里边,然后使用import关键字来导入这些文件比如:import add这是使用add.py文件中的sayHello方法,就可以这样写:add.sayHello()"""add.sayHello()"""当然可以为import进来的模块给一个自己喜欢的名字:import add as jia"""jia.sayHello()"""如果我只想导入add.py中的sayName方法,可以这样写:from add import sayName此时可以直接运行该方法sayName("李四")"""sayName("李四")"""可以将add.py模块中的所有方法都导入:from add import *"""sayHello()sayName("张三")print dir(add) #['__builtins__', '__doc__', '__file__', '__name__', '__package__', 'sayHello', 'sayName']
列表生成式
# 列表生成式,下面以x变量为基础,生成x * x 作为值print [x * x for x in range(1,10) if x % 2 == 0] # 输出: [4, 16, 36, 64]
将函数作为参数
另外其实在python中函数也是变量,因此我们可以将函数也作为参数来传递
def add(x, y, f): return f(x) + f(y)print add(-3,8,abs)
map和reduce
#map接收两个参数,第一个是一个函数,第二个是一个可遍历类型的参数def addOne(x): return x + 1b = [11,22,33,44]b = map(addOne, b)print b #输出: [12, 23, 34, 45]#reduce把一个函数作用在一个序列上,这个函数必须是两个参数,reduce把结果继续和序列的下一个元素做累积计算def addNumber(x,y): return x + y;b = [1,2,3,4]b = reduce(addNumber,b)print b
filter函数
filter函数和map函数有点相似,都是将一个函数用作一个序列,但是filter会根据序列中的每一个元素作为该filter的参数,如果返回true,则保留,否则丢弃
#判断一个字符串中是否包含ab字符串def filterString(str): if str.find("ab") != -1: return True else: return Falseb = ["abc","adb","ddd","abbb"]b = filter(filterString,b)print b # 输出: ['abc', 'abbb']
sorted函数
#python默认提供sorted函数用于为一个序列进行排序,比如:print sorted([0,-2,-3,-4,7,9,45]) # 输出: [-4, -3, -2, 0, 7, 9, 45]#另外sorted()函数还可以接收一个key函数来实现自定义的排序,例如按绝对值大小排序print sorted([0,-2,-3,-4,7,9,45],key=abs) # 输出:[0, -2, -3, -4, 7, 9, 45]
返回函数
在上面的学习中,发现了,可以将函数作为参数来传递,其实就是变量的传递,这里同样可以将函数作为返回值,比如我们写一个函数,实现元素的二次方
def numberHex(x): def realNumberHex(): return x * x return realNumberHexf = numberHex(3)print f() # 输出: 9
匿名函数
lambda表示匿名函数# x表示匿名函数的输入参数b = map(lambda x: x * x, [0,-2,-3,-4,7])print b # 输出: [0, 4, 9, 16, 49]
python装饰器
python装饰器有点类似于java中的spring AOP,android中的hook,即在函数运行时,动态为其增加功能
创建一个装饰器,用来装饰当前函数
def decorSayHello(func): def innerSay(name): print "before say hello, we need to meet" func(name) print "after say hello, we need to say bye" return innerSay
可以看到,这里在执行传递进来的func函数的时候,在执行之前和执行之后,分别打印了字符串
创建一个函数,使用@测试
@decorSayHellodef sayHello(name): print "hello :"+namesayHello("tset")decor_first.png
0 0
- python学习(二)函数
- python学习笔记(二) - 函数
- python学习(二):函数
- Python学习(二 函数)
- 【python学习】之二、函数式编程
- python 学习之二 函数篇
- python学习笔记(二):递归函数
- Python基础函数学习笔记(二)
- python学习笔记(二)之函数
- Python学习笔记(二)函数
- python学习(10)函数二
- Python学习笔记(二)--函数
- Python学习笔记(二):函数
- Python控制流和函数--Python学习笔记二
- python学习笔记(二)--深入了解python函数
- Python学习笔记(十一)-- Python函数(二)
- python函数学习二(几个常用函数)
- python学习笔记(二)流程控制 函数
- Eclipse-Eclispe导入正确工程后出现xml等文件报错
- jvm系列四:JVM监测&工具
- 利用线性拟合模型发现测试环境性能隐患
- 插入Mysql字段,数据长度过长
- [AHK]探测关闭脚本窗口事件
- python学习(二)函数
- 获取cookie问题
- 数据结构--排序
- 阶梯博弈
- 高分子材料成型(三)
- python 爬虫过程中汉字编码的问题
- GRPC 异步调用 C++
- Linux20命令
- 使用JS代码解决外链问题