函数的使用(部分)

来源:互联网 发布:符文战争桌游淘宝 编辑:程序博客网 时间:2024/05/17 15:04

python中一定要注意缩进格式

在python自带的手册中函数形式是__fun__

方法形式啊  fun

#/usr/bin/pythoon

#coding:utf8

#coding=utf8

#encoding:utf8 

等等

from 方法 import 模块

函数默认参数 从右到左

比如 def fun(x=2,y=3):

   当调用 fun(5)的时候

x值不变,y值变成5

当在函数外部要用到局部变量的时候,可以在局部变量前面用global 定义一下就行了

函数默认返回值是None

return 可以返回任何类型

函数多类型传值和处理多冗余参数

传元组t=(‘a','b'),fun(*t)


传字典t={‘a’:'2','b':'3'}  ,fun(**t) 

    t['a']表示key的值为2

当用元组的形式接受参数的时候,可以接受多个单值

例如fun(x,*t)

fun(1,2,3,4,5)的时候  

2,3,4,5会传给元组

当函数定义为fun(x=2.y=3)的形式的时候

要想接受多个值,必须用字典的形式,两个信号

fun(**x)


常用形式是综合起来一起用def fun(x,*arge,**t)

def fun2(t,*arge,**x):
        print t
        print arge
        print x
fun2(1,2,3,4,5,6,7,8,x=23,y=24)

输出

1
(2, 3, 4, 5, 6, 7, 8)
{'y': 24, 'x': 23}


lambda函数(快速定义单行的最小函数,是从Lisp借来的)实际上是一个函数对象

可以让代码更加精简,也可以省去为函数命名和定义函数。

用法举例:

g=lambda x,y:x*y(冒号左边为参数,右边为返回值)

调用g(2,3)返回的是6

switch结构(实际上python里面没有switch语句),但是可以使用字典去实现这个switch效果

注意在使用format格式化的时候注意%后面,如果输出的是一个值就可以直接输出,若为>=2个数值的时候必须要用到元组的形式,不然会报错

例如 print “%d+%d=%d” % x,y,z#这种是错误形式

        print “%d+%d=%d” % (x,y,z)#正确的

#!/bin/python
#coding=utf8
from __future__ import division
def jia(x,y):
        return x+y
def jian(x,y):
        return x-y
def cheng(x,y):
        return x*y
def chu(x,y):
        return x/y
operator={"+":jia,"-":jian,"*":cheng,"/":chu}#调用元组形式operator["x"]
x=input("please number x:\n")
z=raw_input("please a way:+,-,*,/\n")
y=input("please number y:\n")
print '%d%s%d=%d'%(x,z,y,operator.get(z)(x,y))#还可以用operator[z](x,y)这种方式也行


一些内置函数

len()

max()

min()

abs()

pow()

divmod()取商和模;用法divmod(x,y) 表示x/y,返回两个数值(商,余数)
>>> divmod(5,2)
(2, 1)

round()返回一个数的浮点数

若不清楚可以用help(divmod)查看帮助

callable();测试是否为可用或者是定义过的函数,如果是则返回true 不是返回false

range()产生一个序列

例如:range(10)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

xrange()在大数据的时候,比range效率高很多


cmp()比较两个字符串的大小,相等返回0,大于返回1,小于返回-1


type()查看一个对象的类型,并返回。例如 如果l为元组类型,type(l)就会返回《l,list》这种形式的信息

isinstance()测试一个对象的类型。例如isinstance(l,list)表示l是否为元组类型,是就返回true ,不是就返回false

                   isinstance(l,int),是否为整形,字典为dict

类型转换函数:

tuple(l)将l转化成一个元组  str()  list()

例如

>>> l
{}
>>> tuple(l)
()

int()  

hex() 数值转换成一个16进制字符串

oct()  数值转换成一个8进制字符串

chr() 将整数转化为它的字符

ord()将字符转化为它的整数值

long()

float()

complex()创建一个复数

内置函数string处理

str.capitalize()  ##实现str首字母大写比如 “hello”.capitalize()  返回的结果为Hello。但是原来字符串没有变。

str.replace()##实现字符串替换,返回的是一个替换过的字符,但是原来字符串没有变。

>>> s="hello"
>>> s.replace("hello","world")
' world'
>>> s
'hello'

其中还有一个参数s.replace(x,y,z)

z为替换次数,若省略,则会默认全部替换


str.split()##字符串切割函数里面有两个参数str.split(x,y),其中x为分割符,y为分割次数

>>> ip="192.168.2.103"
>>> ip.split('.')
['192', '168', '2', '103']

>>> ip.split('.',1)##将ip这个字符串以'.'为分割符,切割1次 返回的是一个列表
['192', '168.2.103']

另外一种方式是导入string模块,然后从模块中调用处理函数

例如 import string 

         string.replace("hello world","hello","good")

返回为good world

序列处理函数

filter()##  filter(function or None, sequence) 当function函数返回true的时候就会保留对应的序列sequence中对应的值,filter(f,list)表示f函数作用于list这个列表

zip()##起到关联序列的作用

例如:

>>> name=["dai","zhou","wang"]
>>> age=[20,21,22]
>>> tel=["133","123","234"]
>>> zip(name,age,tel)
[('dai', 20, '133'), ('zhou', 21, '123'), ('wang', 22, '234')]

另外一种情况

>>> test=[1,2]
>>> zip(name,age,tel,test)##注意第三个wang的没有了
[('dai', 20, '133', 1), ('zhou', 21, '123', 2)]

map()##关联作用,格式为map(None or function,list1,list2,......)如果对应的列表缺少了,它会用None去填充.

>>> map(None,name,age,tel,test)
[('dai', 20, '133', 1), ('zhou', 21, '123', 2), ('wang', 22, '234', None)]

加入函数的用法

>>> a=[1,2]
>>> b=[3,4]
>>> def fun(x,y):
...     return x*y
>>> map(fun,a,b)
[3, 8]

reduce()##格式reduce(function,list)

在python 3.0.0.0以后, reduce已经不在built-in function里了, 要用它就得from functools import reduce.

>>> l=[1,2,3,4,5]  先把列表里面的第1个和第2个数依次传给函数function操作,并且结果返回和第3个list元素进行同样的操作。直到遍历完list里面的元素。
>>> reduce(lambda x,y:x+y,l)
15
>>> reduce(lambda x,y:x*y,l)
120







0 0