python定义函数

目录

函数

书写格式:

返回值:

定义参数的类型:

参数传入的方式:

 函数的作用域:


函数

反复使用的一段代码,将这段代码进行封装——函数——然后调用

作用:提高代码复用率(避免重复编写,方便后续修改代码)  ,提高代码的可读性    

def  (define定义)             

函数名——定义这个函数,是标识符——要满足命名规则,见名知义便于理解

书写格式

def 函数名():

(缩进)函数体——真正实现具体功能的代码,调用函数时会执行的代码

        return +函数的返回值

函数名()       ————直接写函数名()调用函数,函数定义好后,才能调用,未调用不会执行

函数内有可能会变化的,不建议写函数内,要进行参数化

不变的数据/变量不作为参数,直接拿写在函数体内

def good_jod(salary, bonus, subsidy):   # 定义函数,salary, bonus, subsidy为形式参数
    sum1 = salary + bonus + subsidy
    print(f"工资总和是:{sum1}")
good_jod(8000, 2000, 200)       # 调用函数,传参:8000, 2000, 200为实际参数

# 必备参数:参数定义了就必须要传入,不传或少传都会报错

拿薪资总数做判断(返回值——断言),是不是好工作?

返回值

函数最终得到的结果,这个结果可被函数的外部接收。函数如果有数据需要取出调用,把这个数据的变量设置为函数的返回值

  1. 1.返回值一定是在最后,运行到return后函数内剩余代码不会被执行——标志着函数的结束
  2. 2.返回值可以没有(函数内不使用return,调用函数会返回None
  3. 也可以返回一个,或者多个变量...
  4. 多个返回值用逗号隔开return (变量1, 变量2)——用元组接收多个
  5. def add(a, b):
        c = a + b
        d = c * a
        e = d * b
        return d    # 返回值为d
    # add (5,4) # 调用函数得到函数的返回值
    # 调用方式1
    print(add(5, 4))
    
    # 调用方式2,变量接收返回值
    b = add(5, 4)
    print(b)
# 返回值:函数如果有一个数据需要取出调用,把这个数据的变量设置为函数的返回值
# 定义好工作(薪资,奖金, 福利,接收其他:*args, **kwarg )
def good_jod(salary, bonus, result=500, *args, **kwargs):
    sum1 = salary + bonus + result
    for num in args:        # for遍历*args元组
        sum1 += num
    for num1 in kwargs.values():    # for遍历**kwargs字典值
        sum1 += num1
    return sum1         # 定义函数的返回值


# 函数定义返回值后,可用变量接收函数的调用的时候——返回值
result = good_jod(6000, 1000, 800, 400, 500, 50, aa=100, bb=200, cc=300)
print('工资总和是:{}'.format(result))
if result >= 10000:
    print("好工作")
else:
    print('不是好工作')

定义参数的类型:

  1. 必备参数定义了就必须要传入,不传或少传都会报错

  2. 默认参数给指定的形式参数设定默认值,参数值有大概率使用的情况,可设置为默认值

    3.不定长参数*args、**kwargs

参数传入的方式:

形式参数:函数定义时候的变量

    实际参数:调用函数时变量的 值

形参和实参形成了一一对应的配对关系。

1.位置传参:按形式参数的位置传参,有顺序性——如传错位置,参数错误(方法较简单,但容易出错)

2.关键字传参:函数调用时,在数据前加上关键字(形式参数的名称),表示数据的含义

参数名 = 参数值,指定参数名进行传参——更精确,不容易出错

混合传参:位置传参(必备参数、非默认参数)必须放在关键字传参和默认参数的前面

3.默认参数:如果有些参数有大概率的情况,可设置为默认值

        有默认值的形式参数可不传参,使用默认值(简化函数的调用)

        已设定默认参数,调用时传参后,可替换该参数的默认值

4.不定长参数:

*args:不确定有,也不确定有多少的参数

前面的必备参数和默认参数都接收完后,剩下位置传参方式传参多余的参数都会被这个不定长参数接收,并以元组的格式保存

*args无位置要求,根据自身需求,如放在前面,其后面的其他参数无法接收数据

**kwargs:前面的必备参数和默认参数都接收完后,剩下的用关键字方式传参的参数都会被这个不定长参数接收,并以字典的格式保存(位置:一定要放在最后)

def sum1(a, b, c):
    d = a + b + c
    return d
sum1(b=10, a=20, c=5)    # 关键字传参,可不按参数的位置顺序写
# 默认参数:如果有些参数值有较大概率使用的情况,可设置为默认值
def sum1(a, b=1, c=500):    # 赋值参数默认值
    d = a + b + c
    return d
sum1(100)        # 调用函数传参,a为100,b、c不传使用默认值
sum1(100, 50)      # a为100,b的值为50,c为默认值500
sum1(100, 50, 3)
sum1(10,c=20)        # a为10,b是默认值1,c为20
# 不定长参数*args
def unsure(a, b, *c):     # 不定长参数*c
    calc = a + b
    print(c)        # 打印查看*c不定长参数,为(800,400,500)的元组
unsure(6000,1000,800,400,500)


def unsure1(a, b, *c):     # 不定长参数*c
    calc = a + b
    for num in c:  # for循环遍历不定长参数*c
        calc += num
unsure1(6000,1000,800,400,500,50)
# 不定长参数**kwargs:前面的必备参数和默认参数都接收完后,剩下的用关键字方式传参的参数都会被这个不定长参数接收,并以字典的格式保存
def unsure(a, b, *c, **keywords):     # 不定长参数*c,**keywords
    calc = a + b
    print(c)        # 打印查看*c不定长参数,为(800,400,500,50)的元组
    print(keywords)     # 打印查看keywords不定长参数,为{'aa': 100, 'bb': 200, 'cc': 300}字典
unsure(6000,1000,800,400,500,50,aa=100,bb=200,cc=300)

def unsure1(a, b, *c, **keywords):    # 不定长参数*c, **keywords
    calc = a + b
    for num in c:  # for循环遍历不定长参数*c
        calc += num
    for num1 in keywords.values(): # for遍历不定长参数keywords的值
        print(num1)         
        calc += num1
unsure1(6000,1000,800,400,500,50,aa=100,bb=200,cc=300)

 函数的作用域:

  1. 局部变量:函数内部(函数体)定义的变量,作用域在函数内部,仅在函数内可使用,局部变量不能在函数外部获取
  2. 全局变量:整个 .py文件模块可使用,全局变量在函数内可读,函数不对全局变量做修改
  3. 了解:如要修改,使用关键字 global 全局变量名,在函数内部声明,将全局变量拿来使用修改(一般不使用)

你可能感兴趣的:(python,开发语言)