day09-函数基础

函数

1、什么是函数

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

2、函数的分类

系统函数(内置函数)-- 系统已经声明好的函数(类似已经造好的机器),程序员会用就行
自定义函数 --程序员自己声明的函数(自己造机器)

3、声明函数
  1. 语法:
    def 函数名(形参列表):
      函数说明文档
      函数体
  2. 说明:
    def -- python中声明函数的关键字(固定格式)
    函数名 -- 和变量名要求一样
    (): -- 固定写法
    形参列表 -- 以'变量名1, 变量名2, 变量名3,...'的形式存在,每个变量就叫形参
         形参的个数根据情况可以没有,也可以有多个。
         形参的作用是将函数外面的数据传递到函数里面
    函数说明文档 -- 用三个双引号引起来的字符串;作用是对函数的功能进行说明
    函数体 -- 和def保持一个缩进的一行或者多行语句。(实现函数功能的多条语句)
  3. 初学者声明的步骤
    a.确定函数的功能
    b.根据函数的功能的来确定函数名
    c.确定函数的参数:看实现函数的功能需不需要从外面传值,需要几个?
    d.实现函数的功能
注意:声明函数的时候不会执行函数体
4、函数的调用(调用函数相当于使用机器)
  1. 语法:
    函数名(实参列表)
  2. 说明:
    函数名 -- 已经声明过的函数的函数名
    () -- 固定写法
    实参列表 -- 以'值1, 值2, 值2, ...'形式存在;这儿的每个值就叫实参;
    实参是用来给形参赋值的
# 要求写一个函数实现两个数的和
def sum_1(x, y):
    """
    求两个数的和
    :param x: 参数1
    :param y: 参数2
    :return: 返回参数1和参数2的和
    """
    res = x + y
    return res
x = 1
y = 2
print(sum_1(x, y))
5、函数的调用过程
  1. 语法:
    函数名(实参列表)
  2. 调用函数的作用:执行函数体,获取返回值
  3. 函数的调用过程:
    第一步:回到函数声明的位置
    第二步:传参(用实参给形参赋值)
    第三步:执行函数体
    第四步:执行完函数体就确定返回值
    第五步:回到函数调用的位置,接着往后面执行
def sum1(num):
    """
    求前num的和
    :param num: 参数的值
    :return: 返回前num项的和
    """
    res = 0
    for i in range(num+1):
        res += i
    return res
print(sum1(100))


def str_1(str1):
    """
    打印字符串中所有的字符
    :param str1:传入一个字符串
    :return:返回字符串中的每个字符
    """
    for i in str1:
        if 'a' <= i <= 'z' or 'A' <= i <= 'Z':
            print(i, end='')
str_1("hello world!")


def str_2(str2, char1):
    """
    在字符串中的数字后面加一个特殊字符
    :param str2: 传入一个带有数字的字符串
    :return: 返回一个在数字字符后面加=的字符串
    """
    res = ''
    for j in str2:
        if '0' <= j <= '9':
            res += j + char1
        else:
            res += j
    return res
print()
print(str_2('1hello 2world!', '='))
6、位置参数和关键字参数

根据调用函数的时候传参的方式将参数分为位置参数和关键字参数

  1. 位置参数:让实参和形参在位置上一一对应(第一个实参给第一个形参赋值,第二个实参给第二个形参赋值...)
  2. 关键字参数:以'形参名=值'的形式传参
    注意:如果位置参数和关键字参数同时使用,位置参数放在前面,关键字参数放在后面
  3. 什么时候使用关键字参数:需要跳过前面某一个或几个参数,直接给后面参数赋值的时候必须要使用关键字参数
7、参数默认值

声明函数的时候,形参可以设置默认值,设置完默认值后调用函数的时候有默认值的参数可以不用传参
一个函数可以给所有的参数都设置默认值,也可以给部分参数设置默认值;但必须保证没有默认值的参数必须放在有默认值参数的前面

8、参数类型说明:
  1. 给参数赋默认值,默认值的类型就是参数的类型
  2. 以'参数名:类型名'的形式声明函数
9、不定长参数
  1. 在形参前面加一个*号,那么这个参数就可以同时接受多个实参(位置参数);带*的参数会作为一个元组,对应的多个实参是元组中的元素
    带*的不定长参数,不能使用关键字参数传参
  2. 在形参前加**,那么这个参数也可以同时接受多个实参(关键字参数,关键字自己随便命名);将带**的参数作为一个字典,将关键字参数
    的关键字作为key,实参作为value存储在字典中。
    *args和**kwargs一起使用是为了保证不定长参数传参的时候既可以使用位置参数也可以使用关键字参数
    补充:*的用法:*列表/*元组 --> 直接取出列表/元组中所有的元素
    **字典 --> 直接取出字典中的所有元素
list1 = [1, 2, 3]
print(*list1)


def func1(a, b):
    print(a, b)
dict1 = {'a': 1, 'b': 2}
func1(**dict1)


练习:声明一个函数,求多个数的差
def fun2(*args):
    res = args[0]
    for i in range(len(args)-1):
        res -= args[i+1]
    return res
print(fun2(1, 2, 3, 4))


def fun3(*args):
    if not args:
        return 0
    res = args[0]
    for num in args[1:]:
        res -= num
    return res
print(fun3(1, 2, 3, 4, 5))
10、什么是返回值

返回值就是return关键字后表达式的值(怎么确定函数的返回值)
返回值就是函数调用表达式的值(怎么去获取函数的返回值)
python中所有函数都有返回值,默认是None

  1. 什么是return
    return是函数体中的关键字(只能在函数中使用),作用有两个:结束函数和确定函数返回值
    a.结束函数:执行函数体的时候只要遇到return函数就直接结束
    b.确定函数的返回值:return 返回值(可以是具体的数据,声明过的变量,运算表达式)
  2. 什么是函数调用表达式
    函数调用语句就是函数调用表达式
    每个调用函数的语句都有结果,这个结果就是调用这个函数得到的返回值
11、怎么使用返回值

想要用函数的返回值,就是使用函数调用表达式的值
普通数据能做的事情,函数调用表达式都可以做

12、什么时候需要返回值

初学者:看实现函数的功能会不会产生新的数据

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

推荐阅读更多精彩内容

  • 1.recode 列表,字典,元祖,集合 列表(list): [];可变,有序;元素是任何类型的数据增:appen...
    PythonLi阅读 220评论 0 0
  • 1.什么是函数? 函数就是对实现某一特定功能的代码块的封装 2.函数的分类: 系统函数(内置函数)- 系统已经实现...
    筱哥家的小跟班阅读 264评论 0 0
  • 函数和对象 1、函数 1.1 函数概述 函数对于任何一门语言来说都是核心的概念。通过函数可以封装任意多条语句,而且...
    道无虚阅读 4,564评论 0 5
  • 函数只定义一次,但可能被执行或调用任意次。JS函数是参数化的,函数的定义会包括一个称为形参的标识符列表,这些参数在...
    PySong阅读 319评论 0 0
  • 函数只定义一次,但可能被执行或调用任意次。JS函数是参数化的,函数的定义会包括一个称为形参的标识符列表,这些参数在...
    PySong阅读 526评论 0 0