Python---基本知识17之函数1

2018-01-22  本文已影响16人  hello_我的哥

什么是函数?

函数其实就是把许多代码放在一起,包装好之后的一种形式,使得他可以被多次复用。

函数的简单定义:

如下面代码块所示,首先是一个关键字def,然后一个空格,后面跟函数名,一个小括号,冒号,后面就是代码块了,当然记得加一个tab缩进;调用就直接使用函数名就OK了;

def simple():

    print("我是函数的简单定义")

simple()

传一个参数:

def simple(str):

    print(str)

simple('一个参数的函数')

传多个参数:参数之间以逗号隔开,在调用的时候有两种方式,一种是一一对应,一种是关键字参数对应

1.

def sum(x,y):

    print(x+y)

sum(1,2)

2.

def sum(x,y):

    print(x+y)

sum(y=5,x=7)

传不定长参数:如下面代码块所示,首先形参前面加一个*,表示传过来的参数应该是元组类型,那么t就是一个元组,在使用函数的时候,直接传多个参数就行;如果是参数前面加两个**,表示传过来的参数类型应该是字典,那么在使用函数的时候传参就应该是字典格式的,

1

def indefinite(*t):

    print(t,type(t))

    for i in t: i+=i print(i)

indefinite(1,2,3)

2

def indefinnite(**d):

    print(d,type(d))

    items=d.items()

    result=0

    for k,v in items:

        print(v)

        result+=v

print(result)

indefinnite(a=4,b=5)

参数的装包和拆包:

装包:就是把多个值装成元组或者字典,比如传多个参数的时候,就需要把多个元素进行装包,拆包,就是把元组或者字典转成多个值;如下面代码所示,把1.2.3三个值转为了元组,就是装包过程,把agrs元组转成了三个值就是拆包的过程;

def sum(a,b,c):

    print(a+b+c)

def tupl(*args):

    print(args)

    print(*args)

    sum(*args)

tupl(1,2,3)

缺省参数:如下代码所示,name就是缺省参数,缺省参数就是调用函数的时候可以写也不可以不写的参数,默认有一个默认值,如下代码默认值就是monther;

def love(name='monther'):

    print("i love",name)

love()

值传递和引用传递:值传递的意思是说我只是把内容给了你,就好像我一个箩筐有五个苹果,我只是给了你五个苹果,我的箩筐没给你,箩筐还是我的箩筐;引用传递呢就是我不仅把五个苹果给你了,我还把箩筐都给你了;箩筐都给你的意思就是如果你重新装了6个苹果,那么我从箩筐取出来就会是6个苹果,说白了就是你可以改变我给的那个变量,但是在python里面又分了不可变类型和可变类型,这样的话,你就只能改变可变类型的变量,不可变类型是不能改变的,不可变类型改变之后,已经不是同一个变量了;那么针对python语言,使用的都是引用传递,下面上代码:

1.这段代码验证了当x的值发生改变之后,他的id其实已经改变了,换句话说他已经不是以前的x了

def transfer(x):

    print(id(x))

    x+=1

    print(id(x))

y=5

print(id(y))

transfer(y)

print(id(y))

结果:

1734399856 1734399856 1734399872 1734399856

2.这段代码验证了可变类型是可变改变他本身的值:

def transfer(x):

    x.append(5)

y=[1,2]

transfer(y)

print(y)

结果:

[1, 2, 5]

补充:Python的每个对象都分为可变和不可变,主要的核心类型中,数字、字符串、元组是不可变的,列表、字典是可变的。

函数的返回值:

在代码块的最后加一个return语句就可以把值返回出去,需要注意的是,return后续的代码不会执行

def sum(x,y):

    s=x+y

    d=x-y

    return s,d

result=sum(9,5)

print(result)

函数使用描述:其实就是注释,对于函数的注释有他的规范,就是在代码块的第一行,用三个双引号进行注释,注释需要说清的几个点,函数功能,参数类型,参数意义,返回值类型以及意义;获取函数的注释用help函数获取;

def sum(x,y=1):

    """ 求两个数的和

    :param x: 数值1,数值类型,必填

    :param y: 数值2,数值类型,选填,默认值为1

    :return: 两个和,数值类型 """

    result=x+y

    return result

help(sum)

上一篇下一篇

猜你喜欢

热点阅读