新闻资讯
有不懂?找教程?新闻资讯只有想不到,没有找不到。
这里云集了各类教程,攻略,书籍,文章。资讯中心层出不穷,应有尽有,想增长知识,答疑解惑,就来资讯中心!
您当前的位置:首页 > 新闻资讯 > Python

Python代写编程基础入门笔记(二)函数

2019-11-05
摘要:本篇将带你了解python代写的第二部分:函数表达式,该部分分为三个小部分:函数格式,函数参数和匿名函数

2.1 函数格式

定义函数的格式:

def output():

    return "abc"

其中,def 和 return 为关键字

注意: 函数缩进后面的语句被称为是语句块,缩进是为了表名语句的逻辑与从属关系。缩进这个问题不能忽视,否则会导致代码无法成功运行,这里需要特别注意。

2.2 函数参数

①位置参数,举例,看代码:

def trapezoid_area(base_up, base_down, height):    return 1/2 * (base_up + base_down) * height

然后调用这个参数:

trapezoid_area(1,2,3)

不难看出,填入的参数1,2,3分别对应着函数定义时的三个参数 base_up,base_down 和 height。这种传入参数的方式被称作为位置参数。

②关键词参数:在函数调用的时候,将每个参数名称后面赋予一个我们想要传入的值,如调用 fun1 函数时候:fun1(a=1, b=2, c=3)。关键词参数传入是要把参数的名称与值一起传入。下面各个调用是等价的:

  1. sell(item='Socks', price='$2.50', quantity=6)

        sell(item='Socks', quantity=6, price='$2.50')

③不定长参数


有时我们在设计函数的时候,并不确定参数的具体数量。也就是说,我们事先无法确定到底要传入多少参数。

Python 提供了一种元组的方式来接受没有直接定义的参数。这种方式在参数前边加星号 * 。如果在函数调用时没有指定参数,它就是一个空元组。我们也可以不向函数传递未命名的变量。例如:

def print_user_info( name ,  age  , sex = '男' , * hobby):    # 打印用户信息

   print('昵称:{}'.format(name) , end = ' ')    print('年龄:{}'.format(age) , end = ' ')

    print('性别:{}'.format(sex) ,end = ' ' )    print('爱好:{}'.format(hobby))

        return;

# 调用 print_user_info 函数

print_user_info( '小明' , 25, '男', '打篮球','打羽毛球','跑步')

输出的结果为: 昵称:小明 年龄:25 性别:男 爱好:('打篮球', '打羽毛球', '跑步')

通过结果可以得出,* hobby 是可变参数,且 hobby 其实就是一个 tuple (元祖)。

④ 只接受关键字参数

关键字参数使用起来较为简单,不容易出错,那么有些时候,我们定义的函数希望某些参数强制使用关键字参数传递,这时候该怎么办呢?将强制关键字参数放到某个*参数或者单个*后面就能达到这种效果,比如:

def print_user_info( name , *, age, sex = '男' ):    # 打印用户信息

    print('昵称:{}'.format(name) , end = ' ')    print('年龄:{}'.format(age) , end = ' ')    print('性别:{}'.format(sex))

    return;

        # 调用 print_user_info 函数

    print_user_info( name = '小明' ,age = 25 , sex = '男' )

        # 这种写法会报错,因为 age ,sex 这两个参数强制使用关键字参数#print_user_info( '小明' , 25 , '男' )

    print_user_info('小明',age='22',sex='男')

通过例子可以看,在python代写中,如果 age , sex 不适用关键字参数是会报错的。

2.3 匿名函数

有没有想过定义一个很短的回调函数,但又不想用 def 的形式去写一个那么复杂的函数,那么有没有快捷方式能做到这一点呢?答案是可以的。

Python 使用 lambda 来创建匿名函数,也就是不再使用 def 语句这样标准的形式定义一个函数。

匿名函数主要有以下特点:

  • lambda 只是一个表达式,函数体比 def 简单很多。

  • lambda 的主体是一个表达式,而不是一个代码块。仅仅能在 lambda 表达式中封装有限的逻辑进去。

  • lambda 函数拥有自己的命名空间,且不能访问自有参数列表之外或全局命名空间里的参数。


语法格式为lambda [arg1 [,arg2,.....argn]]:expression


Python代写联系方式: Design_996


相关新闻