08函数基础和实参形参

一.函数

1.函数的定义

1.实现某一特点的功能的封装。
2.函数的分类:
(1)系统函数:--系统自己已经实现了。程序员可以直接使用的函数。(别人封装好的函数)
(2)自定义函数:--程序员自己申明的函数,(自己去封装函数)
2.函数的声明
(1)语法:

def  函数名(参数列表):
    函数的说明文档
    函数体

(2)说明:
def---- 关键字,固定写法
函数名:要求和变量名的一样。看见名字知道功能。
(3): 固定的写法
函数说明文档---,一段注释,说明函数的功能。必须在第一行有效代码的前面。
必须是使用三个双引号引起来的注释。相当于说明书,说明其函数的功能。
函数体 -- 和 def保持缩进的一条或者多条的语句。实现函数功能的代码。
(4)参数列表:--这儿叫形参,格式 参数名1,参数名2,参数民3,参数名4
作用:是将函数外部的数据传递到函数里面。

2.初学者声明函数的步骤。

1.确认函数的功能。
2.根据功能确定函数的名。
3.确定参数(形参)---实现函数的功能需不需要额外的数据。需要几个就设计几个参数。
4.实现函数的功能。
5.最后才写说明的文档。

3.函数的调用

函数(实参)--有几个形参就传入几个实参。
函数必须是已经声明过的函数。
()是固定的写法
实参的列表:多个数据用逗号隔开。需要传递到函数中具体使用的数据。
而且他是给形参赋值的。

def sum2(num1, num2):
    """
    函数功能就是求和
    :param num1:传入的数字1 ,数字
    :param num2: 传入的数字2,数字
    :return: 无返回值
    """
    sum3 = num1 + num2
    print(sum3)


sum2(12, 34)
# 声明一个,求阶层
def class_1(n):
    """
    求阶层
    :param n: 数字
    :return: 无
    """
    sum = 1
    for i in range(1, n + 1):
        sum *= i
        print(sum)

注意声明函数的时候,不会执行函数体。

3函数的调用的过程。

"""
1.回到函数声明的位置,
2.传入参数,用实参给形参赋值
3.执行函数体
4.确定返回值
5.回到函数调用的位置,接着往后执行。

二.实参形参的传入的方式。

1.根据实参的传入的方式分为:位置参数,关键值参数。

def pr(a, b, c):
    """

    :param a: 传入
    :param b: 传入
    :param c: 传入
    :return: 无
    """
    print(a, b, c)

(1)(位置参数)--让实参的值和形参一一对应。
pr(1, 2, 3) # ####这个传入方式是位置参数
(2)关键值参数
pr(a=10, c=113, b=2) #### 这个传入的方式就是关键字参数
(3)混合传入的时候:
混合用的时候,位置参数必须在关键值前面。#pr(10,23,c=10)

2调用的时候形参。

根据形参的使用的情况,想要跳过前面有默认值的,直接给后面的赋值。必须使用关键值。

声明函数的时候可以通过参数名等于值得形式,给参数默认值。 “参数名=值”,有默认值的参数在调用的时候可以不用传入参数。
一部分赋值的时候,不赋值的必须写在前面,赋值的必须写在后面。

def pr2(c: list, a=0, b=0) -> str:  # def pr2(c,b,a=2)。
    """

    :param a: 传入
    :param b: 传入
    :param c: 传入
    :return: 无
    """
    print(a, b, c)


pr2(10, 12, 23)

3

1.可以在说明文档在说明传入值的类型
2.可以给参数赋值说明其类型。
3.还有 def pr2(c:int, a=0, b=0),这种也是可以提示的(按住 ctrl 鼠标点击到函数就可以看到提示)
4.说明参数还有一个好处 def pr2(c:list , a=0, b=0): 比如这个 我们提示了 c 是列表 。那么你用c的时候就会出现c属于列表的功能的提示
5.def pr2(c:list , a=0, b=0)->str 后面的 箭头str 说明返回值是字符串。

4不定长参数-声明函数的时候参数的个数不确定。

(1)声明函数的时候在参数名前加* 号
本质就是将多个实参变成元组。调用的时候只能用位置参数。
带*的不定长参数后面如果有其他定长参数,后面必须用关键词传参数。
*是里面可以传大于等于0的任何参数。

def yt_sum(*x):
    for num in x:
        sum1=0
        sum1+=num
    print(x)

yt_sum(1, 2, 3, 4)

def yt_sum2(name,*x,score):
    print(name)
    for num in x:
        sum1=0
        sum1+=num
    print(x)

yt_sum2("xiaomage", 2, 3, score=4)

(2)声明函数的时候在参数前加 ** 号
带**的必须用关键字传参数
本质就是字典。字典中的元素是关键字和实参值。

注意:调用的时候只能使用关键字参数。

def yt_sum9(**x):
    print(x)
yt_sum9(a=1,b=2,c=3)


打印的结果:
{'a': 1, 'b': 2, 'c': 3}

(3)def 函数名(args,kwargs):
同时使用时,函数还是不定长参数,可以同时使用位置参数和关键字参数,写的时候要放在
*前面。

def hanshu(*args,**kwargs):
    print(args,kwargs)
hanshu(1)
hanshu(2)
hanshu(1,2,a=1,b=3,c=3)
hanshu(1,2,4,a=5,b=23)


打印的结果:
(1,) {}
(2,) {}
(1, 2) {'a': 1, 'b': 3, 'c': 3}
(1, 2, 4) {'a': 5, 'b': 23}

注意:给形参赋值默认值和,给实参赋值的时候,关键字赋值都是放在位置参数和位置赋值的后面。 def exp(a,b,c=0,d=1) exp(10,b=10,c=23,d=48)

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

推荐阅读更多精彩内容

  • 第5章 函数和函数式编程 5.1 引言函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。函数...
    VIVAFT阅读 953评论 0 5
  • 函数和对象 1、函数 1.1 函数概述 函数对于任何一门语言来说都是核心的概念。通过函数可以封装任意多条语句,而且...
    道无虚阅读 4,556评论 0 5
  • Lua 5.1 参考手册 by Roberto Ierusalimschy, Luiz Henrique de F...
    苏黎九歌阅读 13,788评论 0 38
  • 函数只定义一次,但可能被执行或调用任意次。JS函数是参数化的,函数的定义会包括一个称为形参的标识符列表,这些参数在...
    PySong阅读 317评论 0 0
  • 函数只定义一次,但可能被执行或调用任意次。JS函数是参数化的,函数的定义会包括一个称为形参的标识符列表,这些参数在...
    PySong阅读 524评论 0 0