函数的基础知识

函数存在的价值:

当一个功能需要反复使用的时候,如果没有函数,每次需要这个功能就必须把实现这个功能的代码写一遍。如果有函数,
实现功能对应的代码只需要写一遍(封装成函数),然后再每次需要这个功能的时候调用实现这个功能的函数。

def sumN(num):
    sum1 = 0
    for x in range(1, num+1):
        sum1 += x
    print('和:', sum1)

1 + 2 + 3 + ... + 100
sum1 = 0
for x in range(1, 101):
    sum1 += x
print('和:', sum1)
sumN(100)


1 + 2 + 3 + ... + 50
sum1 = 0
for x in range(1, 51):
    sum1 += x
print('和:', sum1)
sumN(50)

1 + 2 + 3 + ... + 1000
sum1 = 0
for x in range(1, 1001):
    sum1 += x
print('和:', sum1)
sumN(1000)


def get_nums(str1):
    new_str1 = ''
    for x in str1:
        if x.isdigit():
            new_str1 += x
    print(new_str1)

# 提取'shhk237水电费9292KJs8'
str1 = 'shhk237水电费9292KJs8'
new_str1 = ''
for x in str1:
    if x.isdigit():
        new_str1 += x
print(new_str1)
get_nums('shhk237水电费9292KJs8')


# 提取电话号码:'电话号码是:162382387738,有事情找我'
str1 = '电话号码是:162382387738,有事情找我'
new_str1 = ''
for x in str1:
    if x.isdigit():
        new_str1 += x
print(new_str1)
get_nums('电话号码是:162382387738,有事情找我')

# 提取薪资
'我是一个工人,每月工资8000块'
str1 = '我是一个工人,每月工资8000块'
new_str1 = ''
for x in str1:
    if x.isdigit():
        new_str1 += x
print(new_str1)
get_nums('我是一个工人,每月工资8000块')

调用函数(使用函数 - 使用机器)

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

说明:
1)函数名 - 需要哪个函数对应的功能,就调用哪个函数;想要调用哪个函数就写哪个函数的函数名。
注意:函数名必须是已经定义过的函数的函数名
2)() - 固定写法
3)实参列表 - 以’数据1, 数据2, 数据3,…'的形式存在,这儿的每个数据就是一个实参。(实参对应的数据可以是任何有结果的表达式)
实参是用来给形参赋值,在提供实参的时候要保证和形参一一对应。

                   变量名1,变量名2,变量名3,... = 数据1, 数据2, 数据3,...  --->  形参 = 实参

重要结论:定义函数不会执行函数体,调用函数的时候才会执行函数体

函数调用过程

每次在调用函数的时候,它的执行步骤:
第一步:回到函数定义的位置
第二步:传参(用实参给形参赋值, 传参的时候必须保证每个形参都有值)
第三步:执行函数体
第四步:确定函数返回值
第五步:回到函数调用的位置,接着往后执行

函数的参数

1.位置参数和关键字参数
根据实参的提供方式将实参分为位置参数和关键字参数两种
1)位置参数:以’实参1,实参2,实参3,…'的形式存在,让实参和形参从位置上一一对应
2)关键字参数:以’形参1=实参1, 形参2=实参2,…‘的形式存在,通过’='将实参和形参对应

注意:位置参数和关键字参数可以一起用,但是必须保证位置参数在关键字参数的前面

def func1(x, y, z):
    print(f'x:{x}, y:{y}, z:{z}')


func1(10, 20, 30)       # x:10, y:20, z:30
func1(20, 10, 30)       # x:20, y:10, z:30

func1(x=10, y=20, z=30)     # x:10, y:20, z:30
func1(y=20, x=10, z=30)     # x:10, y:20, z:30

func1(10, y=20, z=30)
func1(10, z=30, y=20)

# func1(x=10, 20, z=30)         # 报错!

func1(10, 20, z=30)

2.参数默认值
定义函数的时候可以通过’形参名=数据’的方式给形参赋默认值;
在调用函数的时候,有默认值的参数可以不用传参。

注意:定义函数的时候,如果一个函数有的参数有默认值有的参数没有默认值,没有默认值的形参必须在有默认值的形参的前面
3.参数类型说明
没有默认值参数的类型说明:直接在形参后面加’:类型名’;
有默认值的参数,默认值数据对应的类型就是这个形参的类型
4.对应的不定长参数
1)参数个数不确定可以使用不确长参数
定义函数的时候,如果在某一个形参前面加
,那么这个形参就会变成一个不定长参数,它可以接收多个实参(可以是0个、1个、2个、…、10个…)
的不定长参数的本质是一个元组,它接收到的所有的实参是这个元组中的元素。
2) 定义函数的时候单独使用

如果定义函数的时候,形参列表中有一个独立的*,调用函数的时候*后面的所有的形参必须使用关键字参数传参

def func7(x, *, y, z):
    pass


func7(10, y=20, z=30)


def func8(*, a, b):
    pass


def func9(x, *y, z, t):
    print(x)
    print(y)
    print(z, t)


func9(10, 27, 89, 34, 78, 34, z=100, t=200)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值