函数二

一:形参与实参

1、形式参数:定义函数时,括号内定义的参数,其实就是变量名

def fun(x,y):(x,y)就是形式参数

     pass

2、实际参数:调用函数是,括号内由外部调用者传入的值,其实就是变量值

def fun(x,y)

      pass

fun(10,11)(10和11就是实际参数)

3.注意点:

实际参数和形式参数的绑定关系只有在函数调用时才会生效函数调用结束后,就是失效,解除绑定,释法资源。

二、参数的具体使用:

1.位置参数

1.1 位置即就是顺序,位置参数就是按照从左到右的顺序依次定义的参数

1.2定义函数时,按照位置定义的形式参数,称之为位置形式参数

def foo(x,y,z):
      print(x,y,z)

注意:位置参数的特性,在调用函数必须为其传值,而且多一个不行,少一个也不行

1.3调用函数时,按照位置定义的实际参数,称之为位置实际参数

注意:位子实际参数会与形式参数一一对应

 

def foo(x,y,z):
     print(x,y,z)
foo(1,2,3)

 

三、什么是关键字参数

在调用函数时,按照key—value的形式定义的实际参数,也称之为关键字参数

def foo (x,y,z)
   print(x,y,z)
foo(x=1,z=2,y=3)

注意:相当于指名道姓为形式参数传值,意味着即便着不按照顺序定义,仍然能为指定的参数传值

四 默认参数

在定义阶段,已经为某个形式参数赋值,那么该形式参数就称之为默认参数。

 

def register(name, age, sex='male'):
    print(name, age, sex)


register('egon', 18)
register('alex', 73, 'female')
register('wxx', 84)
register('xxxx', 84)

 

注意:定义阶段已经有值,意味着调用阶段可以不传值

电脑输出结果:

egon 18 male
alex 73 female
wxx 84 male
xxxx 84 male

 

 

应用:

对于经常需要变化的值,需要将对应的形式参数定义成位置参数

对于大多数情况下需要将对应的形式参数定义成默认参数

注意:位置参数必须在默认参数前面

 

def fun(y=1,x)#错误
def fun(x,y=1)#正确

 

默认参数在定义阶段赋值一次,也就是默认的定义阶段固定死了

m=0
def foo(x,y=m)
print(x,y)
m='aaaaaaaaaaaaaaa'(之前被定义过了,所以在次赋值就不会被应用)
foo(1)
foo(1,11)

电脑输出:

1,10
1,11

 

 

4、默认参数应当设置为不可变类型(int数字,str字符串,tuple元组)

def register(name, hobby,l=[]):
     l.append(hobby)
     print(name,1l
register('wax','play')
register('alex','read')
register('egon','music')

电脑输出:

wax ['play']
alex ['play', 'read']
egon ['play', 'read', 'music']

 

 

这样会产生一个问题:

我要的是这样的:

wax ['play']
alex ['read']
egon ['music']

 

为什么会产生这种问题呢?

因为  L是一个列表,会增加但不会更替。

解决方案就是:

register('wxx','play',[])
register('alex','read',[])
register('egon','music,[])

或者;

def register(name,hobby,l=None):
    if l is None:
       l=[]
    l.append(hobby)
    print(name,l)
register('wxx','play')
register('alex','read')
register('egon','music')

   

五:什么是可变长度参数

可变长度指的是参数的个数可以不固定,实际参数按位置定义的实参和按照关键字定义的实参,所以可变长的实参指的是按照这两种

形式定义的实参个数可以不固定,然而实参终究是要给形参传值,所以形参必须有两种对应的解决方法来

分别解决这两个方案。

def fun(x,y,z):
    print(x,y,z)
fun(1,2,3,4,5,6,7,8,9)#(输入多了怎么办)

*会将多余的关键字存成元组的形式(位置实参)一旦碰到实际参数加*,就该实际参数的值打散

def foo(x,y,z,*args):
      print(x,y)
      print(args)
foo(1,2,3,4,5,6,7,8)
 

电脑输出:
1 24,5,6,7,8)
foo(1,2,3,4,*args):
    print(x,y,z)
    print(args)
foo(1,2,3,*[4,5,6,7,8]).  #foo(1,2,3,4,5,6,7,8)
foo(1,2,3,*'hello'). #foo(1,2,3,'h','e','l','l','o')

**会将溢出的位置实际参数全部接收,然后保存成字典的形式赋值给kwargs

def foo(x,y,z,**kwargs): #kwargs={'c':3,'a':1,'b':2}
     print(x,y,z)
     print(kwargs)
foo(x=1,y=2,z=3,a=1,b=2,c=3)

电脑输出:

1 2 3
{'a': 1, 'b': 2, 'c': 3}

 

 

*args,**kwargs组合使用:

 def wrapper(*args,**kwargs):
#     print(args)
#     print(kwargs)
# wrapper(1,2,3,4,5,6,7,x=1,y=2,z=3)

 

电脑输出:

(1, 2, 3, 4, 5, 6, 7)
{'x': 1, 'y': 2, 'z': 3}

 

(wrapper被index给限制死了,只能输入三个数字)

def index(name,age,gender):
    print('welcome %s %s %s' %(name,age,gender))
def wrapper(*args,**kwargs):
    index(*args,**kwargs)
wrapper('egon',age=18,gender="male")
wrapper('egon',18,gender='male')
wrapper('egon',18,'male')

电脑输出:

welcome egon 18 male
welcome egon 18 male
welcome egon 18 male

 

 

 

转载于:https://www.cnblogs.com/wuchenyu/p/8658517.html

当前,全球经济格局深刻调整,数字化浪潮席卷各行各业,智能物流作为现代物流发展的必然趋势和关键支撑,正迎来前所未有的发展机遇。以人工智能、物联网、大数据、云计算、区块链等前沿信息技术的快速迭代与深度融合为驱动,智能物流不再是传统物流的简单技术叠加,而是正在经历一场从自动化向智能化、从被动响应向主动预测、从信息孤岛向全面互联的深刻变革。展望2025年,智能物流系统将不再局限于提升效率、降低成本的基本目标,而是要构建一个感知更全面、决策更精准、执行更高效、协同更顺畅的智慧运行体系。这要求我们必须超越传统思维定式,以系统化、前瞻性的视角,全面规划和实施智能物流系统的建设。本实施方案正是基于对行业发展趋势的深刻洞察和对未来需求的精准把握而制定。我们的核心目标在于:通过构建一个集成了先进感知技术、大数据分析引擎、智能决策算法和高效协同平台的综合智能物流系统,实现物流全链路的可视化、透明化和智能化管理。这不仅是技术层面的革新,更是管理模式和服务能力的全面提升。本方案旨在明确系统建设的战略方向、关键任务、技术路径和实施步骤,确保通过系统化部署,有效应对日益复杂的供应链环境,提升整体物流韧性,优化资源配置效率,降低运营成本,并最终为客户创造更卓越的价值体验。我们致力于通过本方案的实施,引领智能物流迈向更高水平,为构建现代化经济体系、推动高质量发展提供强有力的物流保障。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值