函数基础知识

函数基础知识

一、定义函数

1、认识函数

1)什么是函数

​ 函数就是实现某一特定功能的代码的封装(每个函数都有自己的特定的功能)
​ 函数就是吧实现某一个功能的所有的代码打成了一个包,每次需要这个功能的时候不用再重复去写实现这个功能的代码了,而是使用函数。

2)函数的分类

按照函数是由谁创建/定义来进行的分类
系统函数 - 由python创建的函数,这类函数只需要在需要它的功能的时候去调用它。
例如:print、input、type、id、max、min、sum等……
自定义函数 - 由程序员自己创建自己使用的函数

2、定义(创建)函数 - 造机器

语法:
def 函数名(形参列表):
函数说明文档
函数体
说明:
def - 固定写法
函数名 - 程序员自己命名;
两个要求、;是标识符;不是关键字
三个规范:见名知义(看到函数名大概知道函数的功能)、字母都小写多个单词之间用下划线隔开;不使用系统的函数名、类名和模块名
(): - 固定写法
形参列表 - 格式:使用多个变量名用逗号隔开,其中一个变量表示一个形参。(也可以没有形参)
形参的作用:将函数外部的数据传递函数里面
函数说明文档 - 本质就是一个多行注释(机器的说明书)
函数体 - 就是和def保持一个缩进的一条或者多条语句

3、初学者定义函数的基本步骤

**第一步:**确定函数的功能(确定机器造出来是干嘛用的)
**第二步:**根据功能确定函数名(给机器命名)
**第三步:**确定形参;看实现函数的功能需不需要额外的数据,需要几个
**第四步:**利用形参提供的数据实现函数功能
**第五步:**确定返回值(暂时不用关注)
**第六步:**写函数说明文档

4、练习题

**练习1:**定义一个函数求两个数的和

def sum1(num1, num2):
    """
    (函数功能说明区)求两个数的和
    :param num1:(参数说明)提供第一个求和的数据
    :param num2: 提供第二个求和的数据
    :return: 两个数之和
    """
    return num1 + num2


print(sum1(15, 78))
print(sum1(78, 5))

**练习2:**定义一个函数获取指定整数的个位数

def get_units_digit(num1):
    '''
    获取指定整数的个位数
    :param num1: 提供需要获取个位数的那个整数
    :return: 个位数
    '''
    return num1 % 10


print(get_units_digit(14549))

**练习3:**定义一个函数获取指定字符串中数字字符的个数

def count_num_char(str1):
    '''
    获取指定字符串中数字字符的个数
    :param str1: 提供原始的字符串
    :return: 数字字符的个数
    '''
    count1 = 0
    for x in str1:
        if '0' <= x <= '9':
            count1 += 1
    return count1


print(count_num_char('48sd7w3+?,7ert'))

**练习4:**定义一个函数将两个字符串合并成一个字符串,合并方式如下:

‘abc’ 和 ‘123’ 合并为:‘a1b2c3’

‘abcdef’ 和 ‘123’ 合并为:‘a1b2c3def’

‘abc’ 和 ‘12345’ 合并为:‘a1b2c345’

def merge_str(str1, str2):
    '''
    混合两个字符串
    'abc' 和 '123' 合并为:'a1b2c3'
    'abcdef' 和 '123'  合并为:'a1b2c3def'
    'abc' 和 '12345' 合并为:'a1b2c345'
    :param str1:需要拼接的字符串1
    :param str2:需要拼接的字符串2
    :return:拼接好的新字符串
    '''
    new_str = ""
    len_1 = len(str1)
    len_2 = len(str2)
    len_min = min(len_1, len_2)
    new_str = "".join([str1[x] + str2[x] for x in range(len_min)])
    new_str += str1[len_min:] + str2[len_min:]
    return new_str

print(merge_str('abc', '12345'))

**练习5:**定义一个函数打印10的阶乘

def factorial_10():
    '''
    打印10的阶乘
    :return: None
    '''
    ans1 = 1
    for x in range(2, 11):
        ans1 *= x
    print(ans1)


factorial_10()

二、调用函数

​ 1)定义函数不会执行函数体,调用函数才会执行函数体。(调用多少次,函数体就会执行多少次)
​ 2)调用函数的时候,实参的个数由被调用的函数的形参决定。(用实参给形参复制的过程叫传参)
​ 3)函数调用过程(简单版)
​ 当代码执行到函数调用语句的时候,后面的执行过程如下:
​ 第一步:回到函数定义的位置
​ 第二步:传参(用实参给形参赋值)
​ 第三步:执行函数体
​ 第四步:确定返回值(暂且搁置)
​ 第五步:返回函数调用的位置,接着往后执行

语法:
函数名(实参列表)

说明:
函数名 - 需要调用函数的函数名(这个函数名对应的函数必须是已经定义好的函数)
() - 固定写法
实参列表 - 格式:多个数据用逗号隔开
实参是用来给形参复制。(实参就是用过形参传递到函数内容的数据)

三、函数的参数

根据调用函数的时候实参提供方式的不同,将实参分为位置参数和关键字参数两种

1、参数的分类

1)位置参数

直接提供实参对应分数据,让实参和形参在位置上一一对应

2)关键字参数

以’形参1 = 实参1,形参2 = 实参2,…‘的形式传参

3)混用

位置参数和关键字参数可以一起,一起用的时候必须保证位置参数在关键字参数的前面

def func1(a, b, c):
    print(f"a:{a},b:{b},c:{c}")


func1(100, 55, 8)   # 位置参数
func1(456, 78, 5)   # 位置参数

func1(a=78,c=100,b=7)	# 关键字参数

func1(10,c=30,b=20 )	# 混用

2、参数默认值

定义函数的时候可以以‘形参名=值’的形式给形参提供默认值;
如果一个参数有默认值,那么在调用函数的时候有默认值的参数可以不用传参
如果定义函数的时候有的参数有默认值,有的参数没有,那么没有默认值的参数必须在有默认值参数的前面。

def func2(a=10, b=20, c=30):
    print(f"a:{a},b:{b},c:{c}")

func2()
func2(80)
func2(802,c=78)

3、参数类型说明

有默认值的参数:默认值是什么类型,类型说明就是什么类型。
没有默认值的参数:需要在形参后面加‘:类型名’

def func4(x: int, y=''):
    print()

4、不定长参数

1)带*的不定长参数

带*的不定长参数 *如果字啊一个形参前加*,那么这个形参就可以接受任意多个实参。
带*的不定长参数的本质就是一个元组,对应的多个实参是元组中的元素。

注意:a.带*的不定长参数,传参的时候必须使用位置参数
b.如果定长参数在带*的参数后面(有的时候是直接在*的后面),那么后面的定长参数调用的时候必须用关键字参数传参。

2)带**的不定长参数也可以接受多个实参

四、函数的返回值

1、返回值的作用

**定义:**返回值的作用就是将函数内部产生的数据传递到函数外部。

初学者怎么爱额定函数需不需要返回值:看函数的功能有没有产生新的数据,如果有就将新的数据作为返回值返回。

2、确定函数的返回值(怎么将数据作为返回值)

在函数体重通过return 关键字返回函数的返回值:return 数据

**注意:**1)如果执行函数体的时候没有遇到return ,函数的返回值是None
2)return还具有提前结束函数的功能(执行含上述提案的时候再哪儿遇到return,函数在哪儿结束)

3、怎么在函数外获取函数的返回值

获取函数调用表达式的值就是获取函数的返回值。
函数调用表达式 - 调用函数的语句
每一个函数调用语句其实都有一个结果(都是一个数据),这个就说就是这次调用时候函数的返回值

一个函数的返回值是什么,就看调用函数的时候return后面的值时什么,return后面的值时什么,函数外部函数调用表达是的结果就是什么。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值