python的函数

󰃭 2016-04-13

定义

Python的函数定义使用def

def func_name(x):
    return "hello world" //通过return 返回执行结果

#常用内置

常用内置函数(待补充):

abs() // 绝对值计算
isinstance(v, (type list)) //判断是否是类型列表中的值 boolen return
int() //强制int类型转换,小数时仅保留整数位
str() //强制string类型转换
unicode //unicode编码转换
bool() //强制bool 类型转换

return 多值

python的函数是可以返回多值的

 //定义
 def infos():
    name = "Yi_Zhi_Yu"
    age = 25
    return name, age
 //调用
 infos() //('Yi_Zhi_Yu', 25)

可以看到, 返回的多值是以tuple形式输出的

参数

python的参数支持默认参数语法,但必须定义在函数参数的最后面的位置 注意: python的参数可以不需要严格按照定义的函数参数的位置传递进去, 作为代价,需要告诉函数传递的参数对应的是哪个,如下:

def infos(input_name, input_age=18): //默认的参数定义age=18
   name = input_name
   age = input_age
   return name, age
infos("Yi_Zhi_Yu",25) // ('Yi_Zhi_Yu', 25) //默认参数传递顺序
infos(input_age=25, input_name="Yi_Zhi_Yu") //('Yi_Zhi_Yu', 25) 这里就没有按照默认的顺序传递参数

可变参数

当需要向函数传递参数,而又不知道参数的具体数量的时候, 可以使用如下定义方式:

//计算平均分
def average_score(*score):
    s = 0
    for n in score:
        s += n
    return s/len(score)
average_score(10, 8, 8, 10) //9

否则, 按照正常的方式, 还需要定义一个tuple或者list结构,然后传递给函数才能使用,上面的这种方式实际上本身传递进去的就是一个tuple, 把所有的参数都自动放在了*对应的参数里

那么如果传递进去的参数假如本身就是一个tuple或list了, 而上面的方法我们已经定义好了, 那么我们怎么办, 一个个元素score[0], score1写进去又很麻烦, 怎么办: 在传递tuple或list参数的时候带个*即可

score = (10, 8, 8, 10)
average_score(*score) //9 如果不带*,会直接报错类型错误

关键字参数

首先必须搞清楚什么事关键字参数, 在函数定义的时候明确表明了哪个参数的值是什么的时候就是关键字参数, 我们在默认参数那块有用过 python 允许在函数参数传递任意的关键字参数, 前提是最后一个参数定义必须带了**

def new_infos(input_name, input_age, **other_info):
    return input_name, input_age, other_info

那这里除了第一个和第二个参数, 第三个参数都是以dict 形式传递进去的, 用一下就知道了

new_infos("Yi_Zhi_Yu",25, sex="man", interest="basketball")//('Yi_Zhi_Yu', 25, {'interest': 'basketball', 'sex': 'man'})
//other_info 接受了除第一个第二个参数外的关键字参数

混合参数

如果同时传递以上几种类型, 该如何定义呢, 按照顺序, 必须是

    必要参数, 默认参数, 可变参数, 关键字参宿

所以在使用的时候要注意了

Ps: 以上为学习记录, 难免有错, 希望各位指正 参考:廖雪峰Python教程