python基础~函数

内置函数:

内置函数是python自带的函数,可以直接调用

print(),type(),len(),int(),float(),list(),tuple()


自定义函数:

自己在模块里的写的函数

def 函数名():  #定义函数

    代码

def fun1():

    return 'hello'


fun1()    #调用函数。在程序中有返回值,但没有反馈

返回结果:

def fun2():

    return 'hello'


print(fun2())    #调用函数。在程序中有返回值,有反馈

返回结果:

def fun3():

    print('hello')


print(fun3())    #调用函数。None,因为函数没有返回值,返回None

返回结果:

def fun4():

    print('hello')


fun4()    #调用函数

返回结果:



函数的调用:

调用函数:执行函数定义里面的代码块

函数是一段封装的代码,定义之后不立刻执行,在用户调用时执行

先定义,后调用。调用函数时,函数名后面必须要有括号

fun()    #调用函数


函数的参数:

函数定义时可以指定此函数要用到多少个参数。

这些参数只要写参数名,称之为形式参数,简称形参

def sum_data(a,b):  #a,b形式参数,简称形参

    return a+b


print(sum_data(100,125))  #225。简略写法。100,125实际参数,简称实参。调用带有参数的函数时,需要在小括号中,传递数据,称为 “实参”。

print(sum_data(100))  #报错。实参数量小于形参数量

print(sum_data(100,125,180))  #报错。实参数量大于形参数量

print(sum_data(a=100,b=125))  #225。完整写法

print(sum_data(b=100,a=125))  #225。完整写法,参数之间的顺序可以互换

print(sum_data(100,b=125))  #225。前面用简略写法,后面用完整写法

print(sum_data(a=100,125))  #报错。前面用完整写法,后面用简略写法,报错

所有参数都使用完整写法时,次序可以颠倒

一旦有参数使用完整写法,后面所有的参数都必须使用完整写法


函数的缺省值:

函数定义时,可以给每个形参设置一个缺省值

如果用户不输入实参,则函数使用缺省值;

如果用户输入实参,则函数使用用户输入的值

def sum_data1(a=120,b=130):  #可以给函数的形参设置缺省值

    return a+b


print(sum_data1(200,220))  #用户输入了全部参数,以用户输入的为准

print(sum_data1(100))  #用户输入了一个参数,相当于a使用用户输入的值,b使用缺省值

print(sum_data1(b=125))  #用户指定输入一个参数,则此参数使用用户输入的值

print(sum_data1(100,125,180))  #报错


函数的返回值:

函数的返回值表示调用函数时返回的值

函数的返回值写在return的后面

函数可以没有返回值,没有返回值时返回None

def fun5():  #没有返回值的函数

    print('hello')

def fun6():  #有返回值的函数

    return 'hello'

每次调用函数时,函数都会从头开始执行,当这个函数中的代码执行完毕后,意味着调用结束了;如果函数中执行到了return也会结束函数

函数可以有多个return,但是第一个return之后是不可达语句。return之后,程序退出函数,后面的语句不再执行

def absolute_value(n):

    if n>=0:

        return n

        return '这是一个不可达语句'

    else:

        return -n


print(absolute_value(6))  #6

函数可以return多个值,有多个返回值时,以元组形式返回

def sum_data2(a,b):

    return a+b,a-b,a*b,a/b


print(sum_data2(200,120))  #(320, 80, 24000, 1.6666666666666667)

def sum_data3(a,b):

    return [a+b,a-b,a*b,a/b]


print(sum_data3(200,120))  #[320, 80, 24000, 1.6666666666666667]


递归:

函数可以自己调用自己,称之为递归

计算某数的阶乘

def factorial(n):

    if n== 1:

        return 1

    else:

        return n *factorial(n-1)


print(factorial(10))  #3628800


可变长度参数:

可变长度参数*args可以传任意数量的参数给函数

返回时的写法是args,以元组形式返回

def fun7(*args):

    return args


print(fun7(1,2,3,4,5,6))  #(1, 2, 3, 4, 5, 6)

如果有*args以外的参数,*args放在其他参数的后面

*:解包,少一层元组(将元组里的值分开展示)

def fun7_new(a,*args):

    return a,*args  #这种写法,会少一层元组,称之为解包


print(fun7_new(1,2,3,4,5,6))  #(1, 2, 3, 4, 5, 6)

def fun7_newnew(a,*args):

    return a,args  #这种写法,会多一层元组


print(funfun7_newnew(1,2,3,4,5,6))  #(1, (2, 3, 4, 5, 6))


关键字参数:

关键字参数**kwargs,可以将不定数量的参数以定义变量的方式传递给函数

传参时,必须是key = value的格式。返回时的写法是kwargs,以字典形式返回

def fun8(**kwargs):

    return kwargs


print(fun8(name='德华',age=20))  #{'name': '德华', 'age': 20}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。