python函数

Python | 函数(Function)

「 函数定义 」

在编码世界中,函数经常被使用,而且几乎无处不在。看下面使用Python语言定义的一个函数:

#打印任意边界的斐波那契数列

def fib(n):

   """打印斐波那契数列"""

   a, b = 0, 1

   while a < n:

       print(b, end=" ")

       a, b = b, a + b

   print()

通过上面的例子,来学习一下如何定义一个函数:

def是定义一个函数所使用的关键字,用来引入函数的。后面跟着定义函数名,形式参数(形式参数要用圆括号括起来),然后是冒号:。紧接着在下一行开始编写函数体,函数体是这个函数所要实现的功能代码。

函数名,形式参数必须遵循Python的命名规则。

函数体必须从定义函数名的下一行开始,而且必须缩进。

"""打印斐波那契数列""",这个是函数的注释文档,说明函数的作用,可有可无,建议大家还是把这个注释加上,方便以后代码维护,尤其是在工程开发上,代码注释尤为重要,是评价代码质量的一个标准。

形式参数:也称作形参或者参数。他在函数中的作用就相当于定义一个变量,可以在函数体中使用。当调用函数的时候,需要为这个参数赋值。

「 函数的调用 」

定义函数,目的在于使用这个函数来做一些想做的事情,那么我们如何使用这个函数呢?其实很简单:

#打印100以内的斐波那契数列

fib(100)

使用函数名,在圆括号内写入一个值,这个值我们称为实体参数,也称实参或参数,实参的意义就是为函数中的形参赋值。

运行结果如下:

1 1 2 3 5 8 13 21 34 55 89 144

在某些情况下,我们需要为函数起另外一个名字,可以这样写:

f = fib

f(100)

此时f就相当于fib这个函数的函数名,通过这两个名字,都可以调用这个函数。

「 函数的返回值 」

上文中定义的fib函数,调用后只打印了一个斐波那契数列,在实际开发中,我们更多的是想让函数做某些处理,并将处理后的结果返回,这个结果,我们称为函数的返回值。例如:

def fib2(n):

   """返回斐波那契数列"""

   result = []

   a, b = 0, 1

   while a < n:

       result.append(b)

       a, b = b, a + b

   return result

使用这个函数:

f100 = fib2(100)

print(f100)

结果:

[1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144]

我们来解释一下这个函数,

首先,定义函数要使用def关键字,然后定义函数名及参数;

result=[],定义一个list;

result.append(b),向result内追加一个值;

return result,从这个函数中,返回result里面的值,到此函数执行完毕。

return语句,就是函数返回值的关键,意思是从这个函数中返回一个值,如果return后面没有任何表达式或者值,则返回None。函数运行到return语句,则函数执行完毕。

「 多形参函数定义 」

在函数定义的时候,我们可以使用多个形参,每个形参之间使用逗号隔开,在调用的时候,注意实参的顺序,一定是按照形参定义的顺序。例如:

#长方形计算

def perimeter(width, height):

   """计算长方形周长"""

   per = (width + height) * 2

   return per

#调用

w60 = perimeter(60 , 50 )

print(w60)

上例中,60是width,50是height,要注意参数的顺序。

在定义函数形参的时候,可以为形参指定默认值,在函数调用时,可以不必为有默认值的形参写实参。例如:

def perimeter2(width, height=5):

   """计算长方形周长"""

   per = (width + height) * 2

   return per    #调用

w10 = perimeter2(10)

w20 = perimeter2(20,10)

print(w10)

print(w20)

「 关键字参数 」

在多参数,并且参数有默认值的情况下,我们只想更改其中某一个参数,这个时候,我们就可以使用关键字参数。

关键字参数,其实函数的定义没有什么太大的变化,只是在函数调用的时候使用键值对的形式来作为实参。例如:

def perimeter3(width = 10 , height=5):

   """计算长方形周长"""

   per = (width + height) * 2

   return per

perimeter3(height=6)

例子中,为参数width和height都定义了默认值,在调用的时候,我们只更改height,不想更改width,所以调用的时候,实参形式就是height=6。

「 可变参数 」

可变参数,意指在调用函数的时候,可以传递任意数量的参数。例如:

def concat(*args , sep="\\"):

   return sep.join(args)

#调用

print(concat("c:" , "Windows","Fonts"))

结果:

c:\Windows\Fonts

拥有可变参数的函数,在定义的时候,在参数前加*,如*args。

「 总结 」

定义函数,使用def关键字;

函数名及参数要遵守Python的命名规则;

形参和实参统称为参数;

在参数传递的时候,要注意参数的类型,以及参数的顺序,特殊情况可以是用关键字参数的形式。

带返回值的函数,使用return关键字,当函数运行到return语句,则函数执行结束;

使用可变参数的时候,在参数前加*,例如*args。

   

 

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

推荐阅读更多精彩内容