12.函数定义&函数调用

一、函数/方法

1.基本使用:定义、调用、参数、返回值、封装函数、匿名函数

https://blog.csdn.net/m0_57975635/article/details/128144918?spm=1001.2014.3001.5502

2.进阶使用:闭包、变量的作用域、高阶函数、装饰器、递归【了解】

https://blog.csdn.net/m0_57975635/article/details/128357506?csdn_share_tail=%7B%22type%22%3A%22blog%22%2C%22rType%22%3A%22article%22%2C%22rId%22%3A%22128357506%22%2C%22source%22%3A%22m0_57975635%22%7D

1.概述

​ 在一个完整的项目中,某些功能可能会被反复使用,如果将反复出现的代码封装成函数,以后如果要继续使用该功能则直接使用函数即可,另外,如果要修改需求,只需要修改函数

本质:对某些特殊功能的封装

【面试题】优点:

​ a.简化代码结构,提高应用的模块性

​ b.提高了代码的复用性

​ c.提高了代码维护性

# 需求:求圆的面积
​
# 1.
r1 = 45
area1 = 3.14 * r1 ** 2
print(area1)
​
r2 = 10
area2 = 3.14 * r2 ** 2
print(area2)
​
r3 = 5
area3 = 3.14 * r3 ** 2
print(area3)
​
​
# 2.优化
# 本质:对某些特殊功能的封装
def area(r):
    return 3.14 * r ** 2
​
print(area(45))
print(area(10))
print(area(5))

2.定义

语法:

def  函数名(变量1,变量2....):
    函数体
    return   返回值

说明:

​ a.def是一个关键字,是definition的缩写,专门定义函数

​ b.函数名:遵循合法标识符的规则和规范即可,尽量做到见名知意

​ c.(变量1,变量2....):被称为形式参数,是一个参数列表,都只是没有赋值的变量

​ d.函数体:封装某些特殊的功能

​ e.return是一个关键字,表示返回,只能用在函数中,表示结束函数,可以单独使用,也可以携带数据,当携带数据,则表示该函数的返回值

​ f.返回值:常量,变量,表达式

​ g.函数的定义分为两部分:函数的声明和函数的实现

​ h.变量1,变量2.... 和 return 返回值 可以根据具体的需求选择性的省略

"""
语法:
def  函数名(变量1,变量2....):
    函数体
    return   返回值
​
变量1,变量2....  :形式参数,简称形参
return   返回值 :返回值
"""
​
# function:功能
​
print("start")
​
# 1.无参无返回值
def func1():
    print("ok~~~1111")
​
# 2.有参无返回值
def func2(a):
    print('ok~~~2222')
​
# 3.无参有返回值
def func3():
    print('ok~~~~3333')
    return 10
​
# 4.有参有返回值
def func4(a,b):
    print('ok~~~~~~4444')
    return 'abc'
​
print('end')
​
"""
注意:
    1.定义函数相当于定义变量,简单来说,将函数加载到了内存中
    2.一个函数一旦被定义,需要手动调用它,否则无法执行
"""

3.调用

# 1.函数调用的基本使用
# a.定义:函数的声明和函数的实现
def func():
    print("abc")
​
# b.调用
"""
语法:
a.函数的定义
def  函数名(形参):
    pass
    
b.函数的调用
函数名(实参)
​
注意:
    1.函数调用的本质:就是使用函数的过程/执行函数内部代码的过程
    2.调用函数的过程中,一定要注意传参的问题
    3.形式参数:简称形参,出现在函数的声明部分,实际上就是一个变量,等待实参赋值
    4.实际参数:简称实参,出现在函数的调用部分,实际上就是一个数据【常量,变量,表达式】,目的是为了给形参赋值
    5.传参:在调用函数的过程中,实参给形参赋值的过程
"""
# a.无参
func()
​
# b.有参
def func1(num1,num2):
    print('hello~~~~~~')
    print(num1 + num2)
# func1()  # TypeError: func1() missing 2 required positional arguments: 'num1' and 'num2'
# func1(34)  # TypeError: func1() missing 1 required positional argument: 'num2'
func1(12,45)
​
print("*" * 50)
​
# 2.函数之间的相互调用
# a.正常使用
def check1():
    print('ok~~~1111')
    check2()
def check2():
    check3()
    print('ok~~~2222')
def check3():
    print('ok~~~3333')
check1()
​
# b.有问题的使用
# 恶意调用一
# def a():
#     print('aaaaa')
#     a()
# a()
​
# 恶意调用二
# def a():
#     print('aaaaa')
#     b()
# def b():
#     print('bbbbb')
#     a()
# a()
​
"""
注意:
    1.函数之间可以相互调用
    2.代码在执行的过程中,一旦遇到某个函数的调用,则优先执行该函数,当该函数执行完毕好,回到调用函数的地方,继续执行后面的代码
    3.一定要避免函数之间的恶意调用
"""

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Chiayi_init_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值