def自定函数 和参数顺序

本文介绍了Python中函数的概念,强调其用于代码复用和简化任务的重要性。讲解了形参与实参的区别,以及不同类型的参数:必需参数、关键字参数、默认参数和不定长参数。还特别提到了**kwargs参数,指出参数传递的顺序优先级。
[2017-08-07] 继续整理笔记

函数

定义:函数就是组织好的固定功能的代码段,主要是为了复用和减少工作量.
咳咳…个人赶脚就是sql里存储过程之类的东东了吧….
自定义函数就是下面这么个东西了
def say() :
    print("Hello!")

1.形参实参

def say(name) :
    print("Hello {}!".format(name))

运行结果:

>>> a = '小李'
>>> say(a)
Hello 小李!
以上def函数语句中,name就是形参,
调用函数say时的变量a,就是实参

2.参数类型

常用参数类型为必需参数,关键字参数,默认参数,不定长参数
  • 1.必须参数
    • name和myname就是必须参数,必须参数以顺序传入
    • 调用时参数数量必须一致,即函数定义几个参数,调用时必须传入几个参数,要求严格
def say(name,myname) :
    print("Hello {},i am {}!".format(name,myname))
>>> say('小李','小王')
Hello 小李,i am 小王!

  • 2.关键字参数
    • 调用时使用关键字参数来确定传入的参数值
    • 调用参数时可以不按声明顺序而是使用参数命名的形式来用
def say(name,myname) :
    print("Hello {},i am {}!".format(name,myname))
>>> say(myname='小王',name = '小李')  # 和必须参数不同,因为有参数名所以无所谓顺序
Hello 小李,i am 小王!

  • 3.默认参数
    • 声明时定义好默认参数
    • 调用函数时,如果没有传递该参数,则会使用设定的默认参数值
def say(name,myname='小明') :
    print("Hello {},i am {}!".format(name,myname))
>>> say('小王',name = '小李')
Hello 小李,i am 小王!
>>> say('小王')
Hello 小李,i am 小明!

  • 4.不定长参数
    • 声明时无命名
    • 参数没有固定数量
      *args参数,参数值为tuple元组形式
def say(*args) :
    for var in args:
        print(var)
>>> say('wang','li')
wang
li
>>> say('wang')
wang
**kwargs参数,参数值为字典键值对形式
def say(**kwargs) :
    print(kwargs)
>>> say(a=1,b=2,c=3)
{'a': 1, 'c': 3, 'b': 2} #以参数命名形式传值,来使用键值对,**kwargs生成一个字典
参数类型顺序优先级为(从左至右): 必须参数、关键字参数 OR 默认参数 、不定长参数
  • 必须参数,关键字参数
def say(name,age) :
    print(name,age)
>>> say('wang',age=20)  # 必须参数在前,关键字参数在后
wang 20
>>> say(age=20,'wang')  # 错误顺序
File "<ipython-input-9-c23a998776d1>", line 1
    say(age=20,'wang')
              ^
SyntaxError: positional argument follows keyword argument
  • 必须参数,关键字参数和默认参数
def say(name,age,sex='male') :  # 定义时顺序
    print('name:{}'.format(name))
    print('age:{}'.format(age))
    print('sex:{}'.format(sex))
>>> say('li',age=20) #默认参数时
name:li
age:20
sex:male
>>> say('li',age=20,sex='female')  # 顺序从左只有为:必须参数,关键字参数,默认参数
name:li
age:20
sex:female
>>> say('li',sex='female',age=20) # 默认参数指定值时,也是一个关键字参数
name:li
age:20
sex:female
  • 必须参数,关键字参数和不定长参数
def say(name,sex='male',*args,**kwargs) :  # 正确顺序
    pass
def say(name,*args,**kwargs,sex='male'): # 错误顺序
    pass
File "<ipython-input-26-6f31476f2f66>", line 1
    def say(name,*args,**kwargs,sex='male'):
                               ^
SyntaxError: invalid syntax

额,具体略过

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值