Python什么是函数?函数的参数有那些(位置/形参/必传参数,可变参数,默认参数) 适用函数的时候要注意那些内容:有没有参数,那些是参数,那些是逻辑,那些是返回值

1.函数

函数的命名:

  1. 纯小写
  2. 小驼峰命名法--------get_max_value

在这里插入图片描述
在这里插入图片描述

举个例子前面有提到 range 和我们常用的print
以上都是函数,他的功能已经定义好了,我们直接拿出来用就好了

1.1函数风格,详解

#函数  要先定义,再使用
def 函数名():
	函数体----函数功能实现
	pass  #占位符


# 调用函数
函数名()
	

pass:当我们还不知道函数的内容怎么实现的时候,可以先使用pass,不然会报错的
函数体:可以是前面学习的所有的知识,逻辑处理等等

举个例子:

def get_max_value():
	a = 12
	b = 23
	c = 40
    max_value = a
    if a < b:
        max_value =b
    if b < c:
        max_value =c
    print(max_value)


get_max_value()

打印:
40

1.2.1函数的参数设置 --------1必传参数

例如我们的第二张图,自主取款机器
我们在使用的时候,要刷证件才可以使用的。证件-----------函数的参数(形参)
实现功能的时候,需要使用者, (外部)提供数据才行

函数:实现功能,------一套逻辑 逻辑 + 可变的数据

在这里插入图片描述

# 定义的时候:参数---形参,形式参数,不是真正的数据,告诉使用者,你要用的时候要传这些值
# 变量表示。接受调用者的真实数据

def get_max_value(a, b, c):# 必传参数/位置参数
    max_value = a
    if a < b:
        max_value =b
    if b < c:
        max_value =c
    print(max_value)

#调用函数时,如果我们不传参数进去,会报错,告诉我们需要传三个参数abc
get_max_value()
打印:
TypeError: get_max_value() missing 3 required positional arguments: 'a', 'b', and 'c'


get_max_value(12, 23, 40)
打印:
40

可以使用debug打断点的方式来查看,代码的运行逻辑
在这里插入图片描述
总结:为什么叫必传参数?
就例如自动取款机,我们去取钱不插银行卡是肯定不行的。系统将一行卡当作是必须传入的数据,(银行卡可以理解为必传参数),上边的例子种,abc就是

1.2.2----------默认参数

给参数默认一个值,然后仍然按照顺序进行传参a=12 b=23
(顺序:看上图哦,一个参数对应一个值)

例1:

def get_max_value(a, b, c=100):# 默认参数
    max_value = a
    if a < b:
        max_value =b
    if b < c:
        max_value =c
    print(max_value)

get_max_value(12, 23)
打印:
100

例2:
如将默认函数放中间的话,他是会报错的。
因为规则:必传参数一定要放在前面,可传可不传的可以放在后边。
在这里插入图片描述
同样我们可以给三个参数都给默认值。

例3:
两个默认参数
在这里插入图片描述
例4:
三个默认参数
在这里插入图片描述
例5:
两个默认参数的情况下,调用函数重新给变量赋值

def get_max_value(a, b=40, c=30):
    max_value = a
    if a < b:
        max_value =b
    if b < c:
        max_value =c
    print(max_value)


get_max_value(12, 60)
打印:
60

这里 b =40重新赋值为60,所以求最大值为60
不管有没有默认参数,我们在传参时仍然是按照顺序来的,一个参数对应一个值

例6:
传参时可以指定参数传递

def get_max_value(a, b=40, c=30):
    max_value = a
    if a < b:
        max_value =b
    if b < c:
        max_value =c
    print(max_value)


get_max_value(12, c=60)   # 指定一个参数传递,  形参(位置/必传)名字带上的话,就是指定了参数。   get_max_value(c=12, b=60, a=90) 也可以这么写 

打印:
60

1.2.3----------可变参数

概念:参数个数不固定,传多少个都可以
*args
**kwargs

这里可以一print为例:
在这里插入图片描述

print("阿通", "苗苗", "垃圾") #可以输入多个参数--------*args
print("12345678")

打印:#下面打印之后会有一个换行的,
阿通 苗苗 垃圾 
12345678

def sum(*args):
    print(args)# args是一个元组

sum(1,2,3,4,5)#这里的参数我们一个

打印:
(1, 2, 3, 4, 5)

例题
写一个累加的函数,不管你输入多少数字,都计算他的和

def sum(*args):  #只有定义的时候要加   星
    count = 0
    for item in args:#args是一个元组
        count += item
    print(count)

sum(1, 2, 3, 4, 5)
打印:
15

扩展例题:拆包------------适用于元组和列表
计算一个列表内所有成员的和(列表内的成员都是数字)
[1,2,3,4,5]

注意:上边例题中 我们传参传的是数字。输入的格式是元组

#这里用到一个小知识,拆包---------脱外套
def sum(*args):
    count = 0
    for item in args:
        count += item
    print(count)

s = [1, 2, 3, 4, 5]
sum(*s)# 拆包

打印:
15

s = [1, 2, 3, 4, 5]
sum(s) #不拆包,会报错的,因为你传入的参数是一个列表
打印:
TypeError: unsupported operand type(s) for +=: 'int' and 'list'

解释:可以根据debug打断点的方式进入看代码的运行过程
在这里插入图片描述

1.2.4----------这几种参数的混合适用

1.2.4.1-------*args

num1是必传的参数,那么调用时的第一个值一定是给他的。
然后剩下的都给了*args
在这里插入图片描述

def sum(num1, *args, num3=400):
    count = num1 + num3
    for item in args:
        count += item
    print(count)


sum(100, 300, 200)
打印:
1000

‘’‘2020-0910-函数操作练习题 - 要有函数定义和调用哈!!
1、定义函数:(要求:定义函数处理逻辑。考虑参数哦!!)
将输入的所有数字相乘之后对20取余数
用户输入的数字个数不确定
‘’’

def quyu(*args):
    ji = 1
    for item in args:
        ji *= item
    yushu = ji % 20
    print(yushu)
    
quyu(12, 17, 13)
打印:
12

‘’‘2、列表去重
定义一个函数 def remove_element(m_list):,将列表[10, 1, 2, 20, 10, 3, 2, 1, 15, 20, 44, 56, 3, 2, 1]去除重复元素
‘’’

def remove_element(m_list):
    new = []
    for item in m_list:
        if item not in new:
            new.append(item)
    return new


m_list = [10, 1, 2, 20, 10, 3, 2, 1, 15, 20, 44, 56, 3, 2, 1]
res = remove_element(m_list)
print(res)

1.2.4.2-------**kwargs

**kwargs 传入的是字典格式,既然是字典那么我们传参就必须是key-value格式

def person_info(**kwargs):
    print(kwargs)


person_info(height=177, age=18, name="阿通")
打印;
{'height': 177, 'age': 18, 'name': '阿通'}

用法于上边*args类似,但暂时用的较少

©️2020 CSDN 皮肤主题: 深蓝海洋 设计师:CSDN官方博客 返回首页