python函数

内置函数
python里面直接调用函数,如:
abs(-100)

数据类型转换;
python内置的常用函数还包括数据类型转换函数,比如int()函数可以把其他数据类型转换为整数;
int('123')            //123
int(12.34)            //12
bool('')              //False

函数名其实就是指向一个函数对象的引用,完全可以把函数名赋值给一个变量,相当于给这个函数起了一个别名;
a = abs
a(-1)
定义函数
在python中,定义一个函数要使用def语句;
def my_abs(x):
    if x >= 0:
        return x
    else:
        return -x
空函数:
如果想定义一个什么事也不做的空函数,可以用pass语句:
def nop():
    pass

函数的参数:
位置参数:
def power(x,n):
    s = 1
    while n > 0:
        n = n - 1
        s = s * x
    return s
默认参数:
我们可以在定义方法时,设置参数的默认值,如果有参数传进来,就用传进来的参数,不然就用默认值;
def pow(x,n = 2):
    s = 1
    while n > 0:
        n = n - 1
        s = s * x
    return s
注:一:必选参数在前,默认参数在后,否则会报错;
       二:如何设置默认参数;
    定义默认参数要牢记一点:默认参数必须指向不变对象~
不然的话,函数会一直记住这个参数,每次都加一~
def add_end(L=[])
    L.append('END')
    return L
当你正常调用时,结果似乎不错;
add_end()        //['END']
add_end()        //二次调用,['END','END']
add_end()        //三次调用,['END','END','END']
要修改上面的例子,我们可以用None这个不变对象来实现;
def add_end(L = None):
    if L is None:
        L = []
    L.append('END')
    return L

可变参数:我们可以定义可变参数,使传入的参数个数是可变的,我们可以在外面先设一个list或tuple传进去,通过改变list或tuple的参数来达到可变参数传入的效果;但是,我们也可以定义个*num来不限定你传入的参数,你在函数里面可以用一个for n in num来迭代你的数据;
def calc(*numbers):
sum = 0
for n in numbers:
sum = sum + n * n
return sum

关键字参数:我们前面讲的可变参数是允许你传入0个或多个参数,这些参数在传入时会自动组装成一个tuple,而关键字参数允许你传入0或多个key-value类型的参数,这些关键字参数会在传入之后自动组装成一个dict,也就是字典数据类型;
def person(name,age,**kw):
    print('name',name,'age',age,kw)
和可变参数类似,也可以先组装出一个dict,然后,把该dict转换为关键字参数传进去;

命名关键字参数:我们要限制关键字参数的名字,就可以用命名关键字参数,只接受city和job作为关键字参数;
def person(name,age,*,city,job):
    print(name,age,city,job)
这样,你在传入关键字参数的时候,就必须标明是city='Beijing'和job = 'Engineer';这样函数才会接受,不然是不会接受的;
person('Jack',24,city = 'Beijing',job='Engineer')            //正解;
person('Jack',24,'Beijing','Engineer')                 //误解;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

posted on 2018-04-30 16:41  楚大校  阅读(134)  评论(0编辑  收藏  举报

导航