Python-Day03-函数

          今天让我们来初步了解一下Python中的函数吧。

函数在每个语言中都是非常重要的,因为随着工程的扩大,所要面对的代码也会是成千上万,减少无用重复代码,会给程序员带来更高效的便利,这时就能体现函数的作用了。

函数有三个特点:

1.减少代码的重复,提高效率

2.保持整个项目代码的一致性,降低出错率

3.提高程序的扩展性,添加或减少功能都变得更方便


函数的定义和使用:

在Python中定义函数,需要使用 def 标识符来定义函数,然后依次写出函数名,括号,括号中的参数和冒号:

看实例:

def func1(x):
    "Let the numbers add one"
    x = x+1
    return x

里面func1为函数名,x为函数的参数“Let the numbers add one” 是函数的介绍,介绍内容可加可不加,但建议以后自己能加上最好,这个简单函数的作用就是返回一个x+1的数,然后用return 返回此数字。


从上面的例子就可看出Python的函数定义非常简单,可灵活性也非常大

如函数可分为有返回值,多返回值或无返回值

参数有固位置参数,默认参数,参数组类型,和字典形式的参数

以下我们再来细细详解:


1.返回类型:

Python不像Java或者c++一样,必须有固定的返回类型:

#函数
def func1(x):
    "Let the numbers add one"
    x = x+1
    return x

#过程函数
def func2():
    "printf world!"
    print("This is a progress")

无返回类型也有人叫做过程函数,只着重过程,不用在意返回类型。


2.参数类型:

1.位置参数

def power(x,y):

    return x * y

对于这个函数来说,x和y就是该函数的位置参数。
所以当我们调用时,就需要把x,y的参数填写上:
print(power(5,10))

#结果:
#       50

2.默认参数:

默认参数就是你定义函数时事先给该参数填写上数值,当你在使用函数时,如果没有给该值赋值,则会使用你默认给该参数的值。

例子:

def fuc3(x,z=100):
    y = z -x
    return y

print(fuc3(10))
print(fuc3(10,200))

结果: 90
            190

由上面例子可以得出,当我们不赋值时,z就会使用我们一开始给他定义的100,当我们给第二个参数填上200时,

Python就会自动优先的使用我们赋予的新值。

所以说默认参数也是可以给我们减少重复代码的好方法

注:还有一个需要注意的是,但我们参数含有位置参数和默认参数时,默认参数永远都要放在最后面,不然系统会出现错误

3.参数组类型

有时候往往会出现一种情况,有时候我们需要函数接受多个数量不定,且形式未知的参数,这时候我们就不能再

使用位置参数或者默认参数了,而是需要定义参数组类型的函数参数了。

使用的方法就是在定义参数时,在前面添加一个‘ * ’符号

作用:能接受N个位置参数,并将他们转换为元组的参数

例子:

def getposition(*args):
    print("locatain : ",args)

getposition("e","s","w","n")
getposition(*("e","s","w","n"))
结果:

locatain :  ('e', 's', 'w', 'n')

locatain :  ('e', 's', 'w', 'n')

其实使用参数组,实际上是把参数变成元组的形式,然后再传递给函数
由上面可得,使用这种函数,有两种输入参数的方法,相比与第一种,我更推荐第二种方法,因为这样更加简洁易懂,而且当出现多种类型的参数时,也能减少错误


4.字典类型

此外,Python还提供了添加字典参数的功能,使用的方法跟第三个类型类似,就是在参数前添加“ ** ”标识符
例子:
def test2(**kwargs):
    print(kwargs)


test2(name="wiiknow",age="21",sex='male')
test2(**{"name":"wiiknow","age":8})
结果:
{'name': 'wiiknow', 'age': '21', 'sex': 'male'}
{'name': 'wiiknow', 'age': 8}


所以,其实字典类型特点就是能接受N个关键字参数,并将他们转换为字典的形式再传给函数
而关于填写参数,如果只有一个类型的话,我推荐第一种,而如果涉及多个类型参数,则第二种更简单明了
且不容易出错!


参数内的调用方式:

def test2(**kwargs):
    print(kwargs)
    print(kwargs["name"])
    print(kwargs["age"])


test2(name="wiiknow",age="21",sex='male')
test2(**{"name":"wiiknow","age":8})

结果:
{'name': 'wiiknow', 'age': '21', 'sex': 'male'}
wiiknow
21
{'name': 'wiiknow', 'age': 8}
wiiknow
8

5.类型混用

这是我自己总结的最后一个类型,因为以后的实际项目中,不可能只会出现一个类型的参数,带有两个或多个类型
参数的函数都会是正常的。
所以若是需要定义多个参数类型的函数,就需要处理好优先级的问题,不然Python就会出现报错的问题:
而大概的优先级就是这样:
位置参数<默认参数<多个位置参数(参数组类型)<关键字参数(字典类型)
例子:
def test3(x,sex="male",*args,**kwargs):
    print("x : ",x)
    print("sex = ",sex)
    print("arge:",args)
    print("kwarge:",kwargs)

test3("my name",*("test1","test2"),**{"name":"wiiknow","age":21})

结果:
x :  my name
sex =  test1
arge: ('test2',)
kwarge: {'name': 'wiiknow', 'age': 21}


今天就给大家写到这里,没写过博客之前都不知道为了写一篇博客原来还这么费时间和费神,但感觉自己还是收获满满的,愿之后日子与各位共勉 得意





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值