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

什么是函数?

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

函数的简单定义:

如下面代码块所示,首先是一个关键字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)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,607评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,047评论 2 379
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,496评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,405评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,400评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,479评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,883评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,535评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,743评论 1 295
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,544评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,612评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,309评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,881评论 3 306
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,891评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,136评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,783评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,316评论 2 342

推荐阅读更多精彩内容