打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Python—函数
userphoto

2023.10.16 甘肃

关注

什么是函数?

函数本质上就是一个封装后可以重复利用的代码片段,需要使用的时候直接调用就可以,比如前面所使用的 type 函数,print 函数。这些都是 Python 的内置函数,Python 官方的开发者底层封装好后,我们可以拿过来直接使用,不用关心底层是如何实现的。

为什么要定义函数?

为了提升代码的可复用性和结构性,函数的封装是一种思想,可以不用函数也能完成,但是效率低,代码重复量大!

如何定义函数?

在 Python 中,函数的定义需要使用到 def ,def 后面跟上函数的名称、括号,括号里面是参数,后面跟着冒号,然后在缩进的语句块中用 return ,返回函数执行的结果,也可以不用 return ,默认返回 None。

代码示例:

# 定义函数的格式:
def 函数名称(参数):# 参数可写可不写
    函数内的代码块
    return 结果
# 函数必须调用才能执行
函数名称() 

# 定义一个函数输入我是世界上最美丽的人
def print_text():
    print('我是世界上最美丽的人')
# 调用函数
print_text()
# 输出结果:我是世界上最美丽的人

函数的调用

函数在被调用之前必须声明,否则无法调用。print、type 等函数已经在 Python 底层中定义好了,所以我们可以直接调用,无需关心内部如何实现。

代码示例:

# 定义一个函数输入我是世界上最美丽的人
def print_text():
    print('我是世界上最美丽的人!')
    
# 调用这个函数
print_text()

'''
输出结果:
我是世界上最美丽的人
'''

在 Python 程序中,程序从上到下执行,如果遇到函数的定义(def print_text():),编译器会自动跳过,不执行该函数,执行函数结束之后的代码,再往下执行程序,即不会执行(print('我是世界上最美丽的人!'))这里的程序,如果想调用函数,直接调用即可,当程序执行到第二行,发现这是一个函数声明,直接调用函数末尾,到第六行调用这个函数,再进入这个函数体之内执行代码。直到结束,这就是代码的运行过程。

带参数的函数

函数可以通过外部传递参数,参数分为形参实参

代码示例:

# 带参函数格式
def 函数名(形式参数):
    代码块
# 调用函数
函数名(实参)# 参数没有个数限制

# 没有参数, 固定值没有办法动态改变
def sum_num():
    a = 10
    b = 20
    sum = a + b
    print('%d+%d=%d' % (a, b, sum))
sum_num()
# 输出结果:10+20=30

# 计算输入两个数值的和
def sum_numb(a,b):
    print('{}+{}={}'.format(a,b,a+b))
sum_numb(1,2)
# 输出结果:1+2=3

# 带参数版本
def sum_num(a, b):
    sum = a + b
    print('%d+%d=%d' % (a, b, sum))
num1 = int(input('请输入第一个数字'))
num2 = int(input('请输入第二个数字'))
sum_num(num1, num2)

常规而言,函数默认有几个形式参数,在外部调用时,就需要传递多少个实参。

函数的返回值

为什么需要返回值(return)?

如果你希望这个值可以被外界获取,就可以定义返回值;

如果没有定义返回值,函数内的变量只能在函数内使用。

代码示例:

# 将摄氏度转换成华氏度

# 获取摄氏度
def get_noun():
    # 这里假装有一大堆代码最后获取到了摄氏度
    nuoun = 25
    return nuoun # 返回值

# 将摄氏度转换成华氏度
huashi = get_noun() + 273.5
print(huashi)
# 输出结果:298.5

综合来说函数有以下几种类型:

1、函数无参数,有返回值

2、函数无参数,无返回值

3、函数有参数,有返回值

4、函数有参数,无返回值

例如,字典.getkeys 返回值就是所有的key

在网址的访问中,返回值就是告诉我们访问有没有成功。

代码示例:

# 导入requests库,即导入别人的代码
import requests

# 建立网络链接
data = requests.get('http://www.baidu.com')

print(data)
# 输出结果:<Response [200]>  
# 这就是get的返回值,200在网络请求当中,就是正常响应的意思。就是这个网站是可以访问的。

# 获取源代码
data = requests.get('http://www.baidu.com').text
print(data)

返回多给值

1、return 是一次性只能返回一个元素,如果代码写的是多个元素,那么默认会将这些元素封装成一个元组。

代码示例:

def num():
    a = 10
    b = 20
    c = 30
    return a,b,c

print(num())
# 输出结果:(10, 20, 30)

所以,如果你想要返回多给元素,可以将内容以列表,字典,元组的方式进行封装返回

代码示例:

# 返回列表
def num():
    a = 10
    b = 20
    c = 30
    return [a,b,c]

print(num())
# 输出结果:[10, 20, 30]

# 返回字典
def num():
    a = 10
    b = 20
    c = 30
    return {a,b,c}

print(num())
# 输出结果:{10, 20, 30}

运用场景:通过一个方法获取到今天的天气 {'日期':value,'温度':value....}

代码示例:

def num():
    data = '3月26日'
    temp = 20
    hum = 30
    return {'日期':data,'温度':temp,'湿度':hum}

print(num())
# 输出结果:{'日期': '3月26日', '温度': 20, '湿度': 30}

函数的嵌套使用

函数的嵌套即在一个函数中,调用了另外一个函数。

在作用域内,函数名称不能重复。

代码示例:

def test1():
    print('*'*50)
    test2()

def test2():
    print('-'*50)

def test3():
    print('='*50)
    test1()

test3()

# 输出结果:
# ==================================================
# **************************************************
# --------------------------------------------------

程序的执行逻辑:

1、程序从上往下执行。

第一步,def test1()定义了个函数test1,不执行,直接跳到封装函数后;

第二步,def test2()又定义了个函数test2,不执行,直接跳过该函数;

第三步,def test3()又定义了个函数test3,不执行,直接跳到函数后;

第四步,test3(),执行test3函数内的代码,执行print('='*50)代码;

第五步,test1(),调用了test1,程序回到test1函数内的代码,执行print(''50)代码;

第六步,test2(),调用了test2,程序回到test2函数内的代码,执行print('-'*50)代码;

程序执行完毕

函数嵌套的使用

需求:求三个数的平均值

代码示例:

# 用户输入
num1 = int(input('请输入第一个值'))
num2 = int(input('请输入第二个值'))
num3 = int(input('请输入第三个值'))

# 定义求和的函数
def sum_numb(n1,n2,n3):
    result = n1+n2+n3
    return result
# 定义求平均值的函数
def average_number(n1,n2,n3):
    result = sum_numb(n1,n2,n3)/3
    return result

#调用函数
print('平均值:',average_number(num1,num2,num3))

程序的执行逻辑:

1、程序从上往下执行;

2、用户输入第一个值、第二个值、第三个值;

3、def sum_numb(n1,n2,n3),发现是个函数,不执行,程序跳到函数后;

4、def average_number(n1,n2,n3),又是个函数,不执行,程序跳到函数后;

5、print('平均值:',average_number(num1,num2,num3)),调用了average_number函数,程序回到average_number函数内的代码;

6、把num1,num2,num3三个数值往n1,n2,n3这三个参数按顺序套用;

7、执行程序result = sum_numb(n1,n2,n3)/3,这里又调用了sum_numb函数,程序回到sum_numb函数内的代码;

8、又把num1,num2,num3三个数值往n1,n2,n3这三个参数按顺序套用;

9、得出sum_numb(n1,n2,n3)函数的结果,即num1,num2,num3这三个数的和,再计算result = sum_numb(n1,n2,n3)/3;三个数的和除以3,结果得出平均值;

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Python基础知识储备,小白都能看懂的Python函数,实战操作演示
13 函数基础
金三银四,50道必备的Python面试题(建议收藏)
深入讲解Python函数中参数的使用及默认参数的陷阱
《Python入门07》带你了解python函数那点事儿
不懂yield的用法?你的python还没学到家
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服