python---函数

本文详细介绍了Python中的函数,包括函数的引入、定义格式、调用方式、函数注释、参数类型、返回值处理等。特别强调了参数分类,如位置参数、可变参数、默认参数和关键字参数,并探讨了函数的返回值及如何返回多个值。此外,还讨论了参数顺序和函数的嵌套使用。

目录

 

一、函数的引入

二、函数的定义

1.函数的格式:

2.注意事项:

三、调用函数格式

格式:------> 函数名()

四、函数的注释

五、函数的参数

1.格式:

2.说明:

3.参数的分类

六、函数参数的类型

七、函数的返回值

1.格式:

2.注意事项:

八、返回多个值

1.格式:

2.注意事项:

九、参数顺序

十、函数的嵌套


 

 

一、函数的引入

在程序开发时,需要多次使用的某一代码,为了提高效率,将这一代码组成一个模块。

二、函数的定义

1.函数的格式:

 def 函数名():

        (缩进)...函数体.....

def say_hello():
    print('哈哈哈哈')
    print('哈哈哈哈')
say_hello()
print('程序结束了')

 结果:

哈哈哈哈
哈哈哈哈
程序结束了

2.注意事项:

1).函数的名称要遵循标识符的命名规则,多名称时使用下划线

2).函数体都是靠强制缩进来表示的

3). :  ( )都是英文表示的

4).函数只有调用的时候才会执行,只有创建是不会执行的。

三、调用函数格式

格式:------> 函数名()

1).先创建后调用

2).一般情况下调用函数时,不要将函数放到函数体中

3).递归函数时,必须将函数放到函数体中

4).函数可多次调用

四、函数的注释

1).在函数体的第一行使用多行注释对函数功能进行解释说明

2).调用函数的时候,可通过快捷键Ctrl+Q可以查看函数的解释说明,了解函数的功能。


def say_hello():
    '''只是一个打招呼的方法
    你好世界,你好Python,你好云计算
    '''
    print('hello world')
    print('hello python')
    print('hello 云计算')
say_hello()

五、函数的参数

1.格式:

def 函数名(参数1,参数2....):

     ....函数体.....

2.说明:

1).在小括号里面写的变量名就是函数参数,多个参数之间用逗号“ ' ”隔开。

2)函数定义几个参数,调用函数时就必须传递对应的参数个数。

3)定义的参数叫形参----->形式参数

    调用函数时的参数叫实参------>实际参数

def sum_num(aa,bb):
    print(aa,'----',bb)
    num1=aa
    num2=bb
    num3=num1+num2
    print(num3)
#调用函数
sum_num(1,3)

 结果:

1 ---- 3
4

3.参数的分类

位置参数实参和形参一 一对应,按位置传递参数
关键字参数

 以形参等于实参的形式,忽略形参定义的顺序进行传递参数

注意:1.关键字只能是形参过程中声明过的才能使用

           2.关键字参数和位置参数同时存在时,位置参数必须在前                   面,关键字参数在后面。

默认参数

在定义函数形参的时,可以给形参附一个初始值(默认值)-->默认参数

当调用函数时,如果不给默认参数赋值,函数就会用默认值

 如果默认函数被赋值,函数就会用新的值

注意事项:默认参数一定在形参的后面

可变参数

格式:                                              

          *变量名                                 **变量名

 

 可接受多个位置参数                        可接受多个关键字参数

 

可变参数注意事项:

1).多个位置参数被组织成一个元组类型数据

2).一般情况下使用变量名称叫做args------>*args

3).*具有将元组打散的功能

4)**kwargs接受多个关键字参数,变量名称任意,一般使用kwargs

5).**具有将字典打散的功能,也叫拆包

6).关键字参数被组织成一个字典类型的数据

i>位置参数

def sum_num(num1,num2):
    print(num1,num2)
sum_num(1,2)

 结果:

1 2

ii>关键参数

def sum_num(num1,num2):
    print(num1)
    print(num2)
    print(num1+num2)
sum_num(num1=20,num2=10)

结果:

20
10
30

 


 iii>默认参数

def save_userinfo(name,age,gender='女'):
    print('姓名:{},年龄:{},性别:{}'.format(name,age,gender))
save_userinfo('哈哈',20)#不给默认参数赋值,默认使用默认值
save_userinfo('xixi',18,'男')#默认参数赋值,函数就会使用新的值

#结果:


姓名:哈哈,年龄:20,性别:女
姓名:xixi,年龄:18,性别:男

 v>可变参数

def func(*args):
    print(args)
func(1,2,3,4,5)

 结果:

(1, 2, 3, 4, 5)   #可以传递任意多个实参,被组织成一个元组

 iv>*打散功能

tup=(1,2,3,4)
print(*tup)
lst=[5,6,7,8]
print(*lst)

结果:
1 2 3 4 
5 6 7 8
tup=(1,2,3)
def func(a,b,c):
    print(a,b,c)
func(*tup)
结果:
1 2 3

 vi>**将字典打散

dic={'name':'zs','age':20]
def func(name,age):
    print(name,age)
func(**dic)

结果:
zs  20

 

六、函数参数的类型

可变数据类型:list、dic

 

传递可变数据类型,可直接修改函数体中传递的内容,不需要开辟新的内存空间

 

不可变数据类型:str、int、float传递不可变数据类型,函数体中不能修改传递的值得大小,b=200-->重新开一个新的内存空间

i>传递可变数据类型

outter_list=[1,2,3]
print('-------',outter_list)
#print(id(outter_list))
def func(inner_list):
    print('******',inner_list)
    inner_list.append(4)#内容被修改了
    #inner_list=[1,2,3,4,5,6,6,7]#开辟新的内存空间
    print(inner_list)
    #print(id(inner_list))
func(outter_list)
print(outter_list)

 结果:

------- [1, 2, 3]
****** [1, 2, 3]
[1, 2, 3, 4]
[1, 2, 3, 4]

 ii>传递不可变数据类型

a=10000
print('a变量的ID值:',id(a))#实际传递的是地址,
def func(b):
    print(b)
    b=200
    print(b)
    print('修改后的b的ID值:',id(b))
func(a)
#a和b的地址相同,因此值也是相同的
print(a)


结果:
a变量的ID值: 32611088
10000
200
修改后的b的ID值: 506037488
10000
------- [1, 2, 3]

七、函数的返回值

1.格式:

def 函数名(参数1,参数2):

     ....函数体.......

     return  值

2.注意事项:

1).在函数体的最后使用一个关键字return,要返回的值

2).如果函数不写返回值,默认None。

3).return 的两个作用:

     1>可以返回值

     2>结束函数,一般return后面不写其他代码

i>

def sum_num(aa,bb):
    num3=aa+bb
    return num3
#调用函数
ret=sum_num(1,3)#定义一个变量ret接收函数返回值
print(ret)#且他们的内存地址相同



结果:
4

ii>返回None

def func(c):
    print('hhh')
ret=func()
print(ret)



结果:

hhh
None

iii>return可以直接结束整个方法

def func(c):
    print('func....')
    a=10
    b=c
    if a>b:
        return
    print('aaa')
func(1)


结果:
func.....

八、返回多个值

1.格式:

def 函数名(参数1,参数2...):

     ....函数体......

       return   值1,值2,值3

2.注意事项:

1).多个值要用逗号隔开

2).多个值被组成一个元组返回

def func(c):
    a=20
    b=10
    return a,b
ret=func()
print(ret)



结果:
(20,,10)

 因为可以用多个变量接收元组,

 因此返回值可以被多个变量接收

def func(c):
    a=20
    b=10
    return a,b
num1,num2=func()
printnum1,num2)



结果:
20 10

九、参数顺序

1.创建函数声明参数时的顺序:

位置参数 、*args、默认参数、**kwargs

def func(a,*args,b=10,**kwargs):
    print(a)
    print(args)
    print(b)
    print(kwargs)
func('zw','sd','ert',b=20,c=30,d=88)


结果:
zw
('sd','ert')
20
{'c':20,'d':88}

十、函数的嵌套

函数里面套函数

def outter():
    print('aaa')
    def intter():
        print('bbbb')
    intter()
outter()



结果:
aaa
bbbb

函数嵌套调用:

内容概要:本文系统介绍了算术优化算法(AOA)的基本原理、核心思想及Python实现方法,并通过图像分割的实际案例展示了其应用价值。AOA是一种基于种群的元启发式算法,其核心思想来源于四则运算,利用乘除运算进行全局勘探,加减运算进行局部开发,通过数学优化器加速函数(MOA)和数学优化概率(MOP)动态控制搜索过程,在全局探索与局部开发之间实现平衡。文章详细解析了算法的初始化、勘探与开发阶段的更新策略,并提供了完整的Python代码实现,结合Rastrigin函数进行测试验证。进一步地,以Flask框架搭建前后端分离系统,将AOA应用于图像分割任务,展示了其在实际工程中的可行性与高效性。最后,通过收敛速度、寻优精度等指标评估算法性能,并提出自适应参数调整、模型优化和并行计算等改进策略。; 适合人群:具备一定Python编程基础和优化算法基础知识的高校学生、科研人员及工程技术人员,尤其适合从事人工智能、图像处理、智能优化等领域的从业者;; 使用场景及目标:①理解元启发式算法的设计思想与实现机制;②掌握AOA在函数优化、图像分割等实际问题中的建模与求解方法;③学习如何将优化算法集成到Web系统中实现工程化应用;④为算法性能评估与改进提供实践参考; 阅读建议:建议读者结合代码逐行调试,深入理解算法流程中MOA与MOP的作用机制,尝试在不同测试函数上运行算法以观察性能差异,并可进一步扩展图像分割模块,引入更复杂的预处理或后处理技术以提升分割效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值