python-day3-之函数

本文详细介绍了Python中函数的定义与使用,包括基本的函数调用、参数传递方式、默认参数、动态参数等高级特性,以及如何利用format进行字符串格式化。

不使用函数的情况下只能遵循面向过程的编程,即,根据业务逻辑从上到下实现功能,往往重复的功能,使得代码出现重复。

1 #最简单的函数调用
2 #由于python遵循从上到下读入内存的规律,所以函数要放到调用的前面
3 def s1():
4     print('hello world')
5 s1()
#显示:hello world
#函数的参数传入
def s1(name):
    print('my name is %s'%name)

s1('liguangxu')
#显示:my name is liguangxu
#函数的多参数调用(实参与形参相对应)
def s1(name,age,what):
    print('my name is %s,age is %s, is %s'%(name,age,what))
s1('liguangxu',23,'good man')
#显示:my name is liguangxu,age is 23, is good man
#函数的不同位置实参的传入(需要给实参指定对应形参)
def s1(name,age,what):
    print('my name is %s,age is %s, is %s'%(name,age,what))

s1(age=18,what='good man',name='liguangxu')
#显示:my name is liguangxu,age is 18, is good man
#函数形参的默认值(含有默认值的形参必须放在最后)
def s1(name,age,what='good man'):
    print('my name is %s,age is %s, is %s'%(name,age,what))

s1(age=18,name='liguangxu')
#显示:my name is liguangxu,age is 18, is good man

s1(age=18,what='bad man',name='liguangxu')
#显示:s1(age=18,what='bad man',name='liguangxu')
#函数的动态参数,会将实参放入元组中
def test(*args):
    print(args,type(args))

test('123')
#显示('123',) <class 'tuple'>

#函数的动态参数,传入的实参为一组元素,将li整个列表放入元组中
def test(*args):
    print(args,type(args))

li=[11,22,33,45]
test(li)
#显示([11, 22, 33, 45],) <class 'tuple'>

#传入带一个*的列表,将li列表中的每个元素放到元组中
def test(*args):
    print(args,type(args))

li=[11,22,33,45]
test(*li)
#显示:(11, 22, 33, 45) <class 'tuple'> 
test(*'alex')
#显示:('a', 'l', 'e', 'x') <class 'tuple'>
#总结:实参前加个‘*’相当于加了个for循环遍历实参的每个元素,并一一放入元组中
#动态参数形参含两个*,将键值对传入,并保存成字典的形式
def f2(**kwargs):
    print(kwargs)

f2(n1='alex',n2=18)
#显示:{'n1': 'alex', 'n2': 18}

dic={'k1':'v1','k2':'v2'}
f2(kk=dic)#{'kk': {'k1': 'v1', 'k2': 'v2'}}
#显示{'kk': {'k1': 'v1', 'k2': 'v2'}}

#万能参数
def f1(*args,**kwargs):
    print(args)
    print(kwargs)
f1(11,22,33,44,55,k1='aa',k2='bb')
#运行结果(11, 22, 33, 44, 55) 
              {'k1': 'aa', 'k2': 'bb'}            
#formate传参方式
#方式1    
s1='i am {0},age{1}'.format('alex',18)
print(s1)
#显示:i am alex,age18

#方式2
s2='i am {0},age{1}'.format(*['alex',18])#传列表
print(s2)
#显示i am alex,age18

#方式3
s1='i am {name}, age{age}'.format(name='alex',age=18)#字符串中name与age后面一定要加上name=‘’,age=进行指定
print(s1)
#显示:i am alex, age18

#方式4
dic={'name':'alex','age':18}
s2='i am {name},age{age}'.format(**dic)#传字典要加**
print(s2)
#显示:i am alex,age18
#传过来的形参可使用方法不能重新赋值 ,建议全局变量名需大写
#传的是引用 不是复制
def f5(a1):
    a1.append('123')
li=[11,22,33,44]
f5(li)
#显示:[11, 22, 33, 44, '123']
1 #全局变量,所有的作用域,都可读,对全局变量进行【重新赋值】,需要加上global,特殊:列表,字典,可修改,不可重新赋值
2 def f1():
3     global name#表示name为全局变量
4     name='123'
5     print(name)
6 
7 name='456'
8 f1()
9 #显示:123

 

转载于:https://www.cnblogs.com/liguangxu/p/5518365.html

内容概要:本文系统介绍了算术优化算法(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、付费专栏及课程。

余额充值