python-函数

python-函数

函数的作用
封装代码,提高代码的重用性
函数的使用
函数的使用方法:先定义在调用
函数的定义
把代码封装到函数的内部
函数的调用
执行函数内部封装的代码

函数的定义和调用的语法

定义
def 函数名()
函数内部封装的代码
#函数名与变量的命名规则一致
调用
函数名()

案例

1
2
3
4
5
#定义一个函数,编写一个print,在调用函数的时候执行print
def hellow():
    print('函数被调用了')#在这一步的时候函数被封装好了
#函数封装完成后不会自动执行,只有函数被带调用的时候函数才会执行内部代码
hellow()

  

注意

函数在封装的时候不会启动,只有函数在调用的时候才会启动

函数的参数

函数的主要功能是封装代码
一个已经定义好的函数,不应该在去修改已经定好的内部代码
可以通过函数的参数,实现代码的灵活性
语法
定义:def 函数名(参数1,参数2……):
内部封装好的代码
调用:函数名(参数1对应的值,参数2对应的值……)
#在函数定义的时候和调用的时候,参数个数要保持一致

示例

1
2
3
4
#定义一个函数,有两个参数AB,调用函数时返回A+B的和
def test_01(a,b)
    print(a+b)
test_01(3,4)

  

形参与实参

形参:
定义函数的时候,括号里面的参数
形参必须是变量
实参:
调用函数的时候括号里面的参数
实参可以是常量/变量/表达式

参数的传递

函数参数(形参与实参的值传递)
在定义函数的时候形参没有值,只是一个变量
只有在调用函数的时候,实参会把值实时付给形参

示例

1
2
3
4
5
6
7
#定义一个函数,有一个参数,number,在调用函数的时候
#   当实参的值为1,输出一个*,实参的值为n输出n个*号
''思路:主要考虑的是函数的值传递,所以输出就是“*”*number'''
def test_01(number)
    print("*"*number)
test_01(3)#当实参的值为3时,函数的输出就是3
test_01(200)#当实参的值为200时函数的输出值就是200

  

函数的返回值

有时候函数并不是需要显示什么内容,而是要把一个值返回给调用者如(python中的lenmaxmin等函数)
函数的返回内容时铜鼓return返回给调用着
return后面可以时常量也可以是变量,还可以是表达式

示例

1
2
3
4
5
#定义一个函数,有两个值ab,当调用者调用函数时,函数通过return返回给调用者a+b的和
def tes_01(a,b):
    return a+b
number=test_01(3,5)#此时number是函数test_01的调用者,所当number调用函数test_01时,函数通过return返回给numbera+b的和
pritn(number)#因为number得到了函数的返回值,所以这个变量就被赋值了

  

示例2

1
2
3
4
5
6
7
8
#定义一个函数有连个值Frist 和 second,,如果first大于second函数返回Frist,如果second大于first,返回second
def tes_01(firdt,second):
    if first>second:
        return first
    else:
        return second
max1=test_01(2060)
print(max1)

  

示例3

1
2
3
4
5
6
7
8
9
10
11
12
13
#定义一个函数,函数有两个值,start和stop,start代表开始范围,stop代表结束范围,求这这个范围内所有整数相加的和
'''实现思路:如果start大于stop则 代表这时一个负数
            start小于stop表示这个是一个正数
            搭配while循环计数的方法'''
def test_01(start,stop):
    sum=0#sum用于存放计算结果
    a=start#start用于循环计数
    while a<=stop:#循环次数,只要start大于stop循环结束
        sum += a#每训话一次,sum和a就相加一次,并将和更新为sum的值
        a+=1#循环一次给a加防止称为死循环
    return sum
num1=test_01(20,30)
print(num1)

  

示例4

1
2
3
4
5
6
7
8
9
#定义一个函数,能够依据半径计算圆的面积
'''圆面积的计算公式:S=πr²
    π=3.14,r=园的半径
    在函数内部定义一个变量,这个变量的值等于π,return返回π*r的平方(算数运算符中的**)r是形参等于园的半径'''
def test_01(r):
    pai=3.14
    return pai*r**2
num1=test_01(5)
print("园的面积为:%s"%num1)#最好是使用字符串进行拼接,为防止计算出的结果是浮点数或者其他,使用字符串后面如果还需要计算,可以使用int进行强转,如果使用了整数/浮点数。返回结果与类型不相同的化会报错

  

return的意义

return的意义就是:
···············不管需求怎么变化,但函数内部封装好的代码不可以进行改动
···············所以要把因需求而改变的代码放到函数外面函数内部的代码不能随意改动

示例5

1
2
3
4
5
6
7
#封装一个函数,可以求矩形的面积
'''实现思路:矩形面积公式高*宽,所以这个函数有两个参数1height,weight
    依据公式可以的出函数的返回值就是height*weight的值'''
def area(height,weight):
    return heright*weight
area1=area(2,5)
print(area1)#输出园的面积

  

示例6

1
2
3
4
5
6
7
#需求:实现当参数1 能够参数2整除时返回true,不能整除返回false
'''思路:可以使用取余数的方式,当参数1取余数参数2等于0返沪true,否则返回false'''
def test_02(number1,number2)
    if number1%number2 ==0:
        return True
    else:
        return  False

  

函数的嵌套

函数嵌套的意思
与if嵌套,while嵌套,for嵌套一样,函数的嵌套就是一个函数里面还有另一个函数
执行步骤:循环嵌套和判断嵌套都是只要满足外面的条件,才会执行里面的代码
而函数的嵌套不同,函数的嵌套是,在调用外面的函数时,里面的函数不会动
如果一旦调用里面的函数,外面的函数也会随之被自动调用

示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#定义两个函数,在调用函数1时函数二不会执行,在调用函数2时函数1和函数2都会执行
def test_01():
    print("hanshu1")
def test_03():
    print("hanshu2")
def test_02():
    test_01()
    test_03()
print(test_02())

  

变量的作用域

局部变量
在函数内部的变量叫局部变量
局部变量只能在函数内部使用
不同的函数,局部变量的名字可以相同
全局变量
在函数的外面变量叫全局变量
全局变量在所有函数内部都可以使用
注意:局部变量能解决的问题最好不要使用全局变量

局部变量的作用范围

1
2
3
4
5
6
#局部变量的范围只在当前函数,在调用函数的时候开始在内存出现,函数调用完毕,局部变量从内存消失
#如果一个函数定义了局部变量,但是这个函数没有被调用那么这个变量也就不存在
def test_01(a):
    a=1#a是一个局部变量,只属于这个函数,当函数被调用时,这个变量才在内存中出现,如果这个函数没有被调用那么这个变量也就不存在
    print(a)
#在当前函数里面定义的局部变量在其他函数里面没有办法去调用

  

全局变量的作用

全局变量在任何函数里面都可以使用,不管函数有没有被调用,这个变量都存在内存中
全局变量一般定义在函数的上方
全局变量只有在程序运行结束后才在内存中消失
1
2
3
4
5
6
7
number=2
def test_01(c):
    return c* number#不论在哪个函数里面全局变量都可以被调用
def test_02(d):
    return d/number
print(test_01(10))
print(test_02(20))

  

 

局部变量与全局变量重名

1
2
3
4
5
6
#如果一个函数中的全局变量与局部变量重名,那么在这个函数内部只能使用局部变量
a=10
def test_01(c):
    a=30
    reutrn a * c
print(test_01(5))#在这个函数内部只能使用局部变量,全局变量无法被调用

  

global关键字

#当在函数内部想要修改全局变量的值时,我们需要使用global关键字进行修饰才可以修改全局变量的值
语法:
def 函数名():
global 全局变量名
全局变量名=全局变量值

示例

1
2
3
4
5
6
7
#在函数内部修改全局变量的值为2,并进行计算
a=10
def test_01(c):
    global a#先使用关键字global进行修饰全局变量
    global=2
    return c*a#修饰完成后在进行调用
print(test_02(2))#此时计算过程中调用的全局变量的值为2而不是10

  

形参与实参的值传递

如果形参的类型为数字或者字符串,在函数内部修改了形参的值,实参的值不会改变

1
2
3
4
5
6
7
8
9
def my_func1(a):   # 这里的a是形参, 这里的a只是一个属于函数my_func1的形参,而不是全局变量a
    a += 1  # 在函数内部,修改了形参a的值,不是修改了全局变量a的值
    print(a) # 输出了形参a的值
a = 10  # 程序的入口 定义一个全局变量a,值是10
my_func1(a)  # 把全局变量a做为实参,去调用函数my_func1
print(a) # 全局变量a的值没有改变
# 当参数类型为数字或者字符串, 形参的值改变了,实参的值不会改变

  

 

形参的缺省值

#缺省值可以被称为默认值
#如果在调用函数时,实参没有值,那么形参的缺省值会被采用
语法:
def 函数名(形参1=缺省值,形参2=缺省值)

示例

1
2
3
4
5
6
7
8
9
10
11
def my_test1(a, b = 10):  # 形参b有缺省值
    print(a, b)
def my_test2(a = 1, b = 2):
    print(a, b)
my_test1(1, 2)
my_test1(100)
my_test2()
my_test2(100, 12)
#注意:不能把有缺省值的形参写道没有缺省值的形参前面,有缺省值的形参在后面

  

lambda匿名函数

lambda是给特别小型的函数准备的一个简化语法
不用写def,也不用写return
一行代码就能定义一个函数
语法
lambda 参数1 ,参数2,……:函数要执行的代码

示例

1
2
3
#使用lambda匿名函数实现两数相加求和
sum1=lambda a,b :a+b
print(sum1(3,6))

  

示例

1
2
3
4
5
6
7
8
9
10
#简化版求最大值
#正常求最大值
def test_01(c,b):
    if c>b:
        return c
    else:
        return b
#简化后
num1=lambda c,b :c if c>b else b
print(num1(6,3))

  

 
posted @   WeiDongRR  阅读(22)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端
点击右上角即可分享
微信分享提示