Day10.今日总结

1.什么是函数

函数就是对实现某一特定功能的代码段的封装

2.函数的分类

   内置函数(系统函数):python已经实现的函数,程序员之间使用,例如:print();input();max()等等,

相当于系统已经造好的机器
自定义函数:程序员自己定义的函数,相当于自己造机器

3.函数的定义(声明)

"""
1)语法
def 函数名(参数列表):
函数体
2)说明
def - 声明函数的关键字,固定写法
函数名 - 要求:标识符、不能是关键字
规范:见名知义(看见函数名能大概知道函数的功能)、所有字母都小写,多个单词用_隔开,不能与系统函数名重名
() - 固定写法
参数列表 - 形参1,形参2,形参3 …… ;参数可以没有,也可以有多个
变量名1,变量名2,变量名3 ……
形参的功能是将函数外的数据传递至函数内
: - 固定写法
函数体 - 必须与def保持一个缩进的代码段
函数体分为函数说明文档和实现函数功能的代码段两个部分

3)初学者声明函数的步骤:
第一步:确定函数的功能
第二步:根据功能确定函数名
第三步:确定参数,确定是否需要参数,需要几个参数
看实现函数的功能是否需要从函数外向函数内传输值,如果需要,需要几个
第四步:实现函数的功能
第五步:确定函数的返回值 (暂时不管)
"""

4.函数体在函数声明时,不会执行,调用后才会执行(重要)

5.函数调用

"""
1)语法:
函数名(参数列表)
2)说明
函数名 - 函数名必须是已经声明过的函数
() - 固定写法
参数列表 - 实参:对形参赋值的
值1,值2,值3

"""


def product(n=4):
    result = 1
    for x in range(1, n+1):
        result *= x
    print(result)


product(8)

1.函数的调用过程

"""
函数在声明的时候不执行函数体,调用函数的时候才会执行函数体

函数的调用过程:
1)回到函数声明的位置
2)用实参给形参赋值(传参) - 要保证每个参数都有值
3)执行函数体
4)确定返回值
5)回到调用函数处继续执行
"""

2.函数的参数

1)根据实参的写法将参数分为位置参数和关键字参数
位置参数:调用函数时让实参的位置与形参一一对应,然后保证每个形参都有值
关键字参数:实参列表以形参名=值得方式来调用函数,顺序可以与声明时不相同
注意:关键字参数与位置参数可以混合使用(位置参数必须在关键字参数前面)

def fun1(a, b, c):
    print(a, b, c)


fun1(10, 20, 30)
fun1(a=10, c=20, b=30)
# 关键字参数与位置参数可以混合使用(位置参数必须在关键字参数前面)
fun1(10, c=20, b=20)

2)参数默认值
声明函数的时候,函数的形参可以设置默认值
注意:
a.声明函数时,没有默认值的必须放在前面,设置默认值放在后面
b.有默认值的参数调用时可以不用传参,没有默认值得参数必须传参
c.当传参时需要跳过某个或者某几个有默认值的参数,直接向之后的参数传参时,必须使用关键字传参

3)参数类型说明
a.给参数设置默认值,默认值是什么类型,参数就是什么类型
b.以'参数名:类型名"的方式说明参数类型

def func3(a, nums: list, b=0):
   print(a + b, nums)

练习:写一个函数,函数的功能是统计一个列表中指定元素的个数

def counts(item1, list1: list):
    n = 0
    for item in list1:
        if item1 == item:
            n += 1
    print(n)


list1 = [1, 2, 3, 4, 5]
list1.count(2)

4)不定长参数
a.声明函数时在形参前加*,可以将这个形参变成元祖,然后同时接受多个位置参数的值
注意:一个函数中可以同时有不定长参数与定长参数,不定长参数要放后面
如果出现定长参数放在不定长参数后面,那么不定长参数后面的定长参数调用的时候需要使用关键字参数传值

def func(*num):
    print(num)


func(12, 23)


# b.声明函数时,在形参前加**,可以将这个形参变成字典,然后同时接受多个关键字参数值
def func(**num):
    print(num)


func(a=1, b=2, c=9)

注意:原则上一个函数的参数中既可以有定长的也可以有一个的不定长和带两个的不定长;
如果同时存在
与*的参数,带要在前面

练习:写一个函数求多个数的和,要求调用函数的时候既可以使用位置参数传参,也可以用关键字参数传参

def fl_sum(*arg, **kwargs):
    sum1 = sum(arg)
    for item in kwargs:
        sum1 += kwargs[item]
    print(sum1)


fl_sum(a=1, b=2)

1.什么是返回值

返回值得作用是将函数内部产生的数据传递到函数外
返回值就是函数调用表达式的值,就是return关键字后面的值
注意:函数调用表达式 - 调用函数的语句,它的结果就是这个函数的返回值;
- 通过函数调用表达式获取返回函数的返回值

2.return关键字

return只能出现在函数体中:
当执行函数体的时候遇到return,函数结束;并且会将return后的值作为函数的返回值返回
如果在执行函数体时没有遇见return,函数的返回值时None

3.函数的调用过程(完整版)记!!!

"""
1)先回到函数声明的位置
2)传参(每一个形参都有值)
3)执行函数体
4)确定返回值(执行完函数体中所有语句,没有遇见return,函数的返回值为None;
执行过程中遇见了return,函数的返回值为return后的值,如果return后无值,为None
5)回到函数调用处,继续执行。(此时函数调用表达式的值才是函数的返回值)
"""

4.什么时候函数虚有返回值

初学者建议:只要实现函数的功能产生了新的数据,就可以把产生的数据提供返回值返回

def fl_qi(num0, num1):
    num0, num1 = num1, num1+num0
    if num1 > 100:
        return num1
    return fl_qi(num0, num1)


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