Python3 函数

自定义函数

函数是组织好的,一次定义可多次使用的代码段。Python提供了许多内置函数,比如print()。但我们也可以自己创建函数,这被叫做用户自定义函数。我们先来看一个简单的函数:

def hello():
    '这是一个简单的函数'
    print("hello world")
hello()

上面定义了一个函数hello(),并且调用了函数,最终效果是打印出一句hello world。我们可以从上面得到一些函数的基本定义方式。总结如下:

  • 函数以 def 关键词开头,后接函数名称和圆括号 (),()中传入参数。
  • 函数的第一行可以存放字符串说明函数的功能。

我们再来看看有参数传递的函数,python中一切都是对象,所以传值的参数就可以分为两种,一种是不可变对象,例如字符串,元组,数字等;另一种是可变的对象,例如列表,字典等。

  • 传不可变对象类型类似于c++的值传递,只能将实参的值赋值给形参,而不能将形参的值传回给实参,形参的变化不会影响到实参的变化。
def func1(a):
    a=3

b=2
func(b)
print(b)  #输出2
  • 传可变对象,通过函数可以修改原对象的类容,类似于c++的引用传递,操作同一对象。
def func2(a):
    a.append([1,2,3])

b=[1,2,3]
func2(b)
print(b)  #输出[1, 2, 3, [1, 2, 3]]

有些函数参数会有默认值,即在调用函数时,不传入指定参数,则会使用定义时的默认值。在c++中,函数带默认值的参数写法遵循从右向左的顺序,以便在函数调用时能够正确传值,在Python中也遵循这个原则。另外,还可以用关键字传指定参数的值。如下例:

def func3(name,age=20):
    print("名字",name,end=";")
    print("年龄",age)

func3('ysg')  #输出:名字 ysg;年龄 20
func3(name='zs')    #输出:名字 zs;年龄 20

此外,如果事先不清楚传入的参数个数,可以在参数前加*表示,在传入参数时,参数之间用逗号隔开。如下例,求解输入数据的加法:

def func4(*number):
    sum=0
    for x in number:
        sum=sum+x
    print(sum)

func4(1,2,3)   #输出6

lambda表达式

lambda表达式是一个能够完成特定功能的表达式,与函数的作用一样,二者的区别主要是lambda表达式代码定义简单,可以在使用的时候定义,主要是完成一次特定的功能;而函数需要在使用前定义,可多次使用。lambda的基本语法如下:

lambda arg1,arg2,...,argn:expression

lambda表达式参数也可以指定默认值,也遵循函数定义时的规则,在调用时候也与函数一样。下面用了一个简单的实例:

sum1 = lambda a,b:a+b;
print(sum1(1,2))  #输出 3
sum2 = lambda a,b=5:a+b;
print(sum2(1))    #输出 6

可以看到,lambda表达式返回的值就是表达式的值,在函数中,我们可以用return来返回函数的计算结果;return不带参数的话,作用就是退出程序并且返回None。如下例:

def func5(a,b):
    if((type(a)!=int) | (type(b)!=int)):
        return;
    else:
        return (a+b);
print(func5('a',2))  #输出 None
print(func5(1,2))    #输出 3
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值