Python学习(九)------- 自定义函数

在Python中,可以创建4种函数:

全局函数:可以由创建该函数的同一模块中的任意代码调用。

局部函数:定义在其他函数之内,只能由定义的函数调用。

Lambda函数:是表达式,可以在任何需要使用的地方定义。

方法:是与特定数据类型相关联的函数。

1. 全局函数

def functionName(parameters):

    suit

parameters可以使用关键字参数,就是为参数指定一个名字,而不只是使用其位置来调用。

函数参数不允许一个有默认值的参数后面跟没有默认值的参数,例如:def bad(a, b=1, c):是不允许的。另外,在函数调用时,如果使用关键字参数的话,可以有严格按照参数顺序来传递参数,可以按照关键字来指定特定的参数。在函数调用的时候,位置参数必须在关键字参数之前。

给定默认参数的时候 ,默认参数实际上是在函数定义的时候创建的,而不是在调用函数的时候创建的,这对于固定参数没有问题,对于可变参数就不太一样,例如:

def append_if_even(x, lst=[]):

    if x % 2 == 0:

        lst.append(x)

    return lst

每次使用默认参数调用这个函数时,lst并不是每次都创建一个新的lst,而是每次都使用同一个lst,就好像一个静态变量一样。

另外,我们还可以使用序列拆分操作符(*)来提供位置参数,如果序列的项数比函数需要的参数数目多,可以使用提取分片的方法来提取合适的参数。

还可以将*本身作为参数,用于表明后面不应该再出现位置参数,只能出现关键字参数。

同样,我们还可以使用映射拆分操作符(**)来对映射进行拆分。

2. 全局变量

在使用全局变量的时候,经常要用来global语句,其使用是告诉Python,某个变量的作用范围是全局范围,对变量的赋值应该应用于全局变量,而不是创建一个新一局部变量。

3.Lambda函数

lambda parameters: expression

其中parameters是可选的,如果提供,格式和位置参数相同。expression不能包含分支可循环,但可以包含条件表达式,也不能包含return语句。lambda函数的结果是一个匿名函数。调用lambda函数时,返回的结果是对表达式进行计算产生的结果。

4. 断言

assert bool_expression , optional_expression

如果bool_expression评价为False,就产生一个AssertionError异常。如果给定可选的optional_expression,就将其用作AssertionError异常的参数。

在软件发布的时候,我们可以通告Python不执行Assert语句。这可以通过在运行程序时在命令行指定-O选项来实现,比如:python -O abc.py。另一种方法是将环境变量PYTHONOPTIMIZE设置为O。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值