函数定义与使用

来源:互联网 发布:超级英雄淘宝购买礼包 编辑:程序博客网 时间:2024/05/19 19:12
  1. 函数定义

你可以定义一个由自己想要功能的函数,以下是简单的规则:

  • 函数代码块以def关键词开头,后接函数标识符名称和圆括号()。

  • 任何传入参数和自变量必须放在圆括号中间。圆括号之间可以用于定义参数。

  • 函数的第一行语句可以选择性地使用文档字符串—用于存放函数说明。

  • 函数内容以冒号起始,并且缩进。

  • Return[expression]结束函数,选择性地返回一个值给调用方。不带表达式的return相当于返回 None。


语法

def functionname( parameters ):   "函数_文档字符串"   function_suite   return [expression]

默认情况下,参数值和参数名称是按函数声明中定义的的顺序匹配起来的。

实例

?
1
2
3
4
5
6
7
8
>>> def myfun(a):
    if(a==10):
        print("ok")
 
         
>>> myfun(10)
ok
>>> myfun(2)

按值传递参数和按引用传递参数

所有参数(自变量)在Python里都是按引用传递。如果你在函数里修改了参数,那么在调用这个函数的函数里,原始的参数也被改变了。例如:

#!/usr/bin/python # 可写函数说明def changeme( mylist ):   "修改传入的列表"   mylist.append([1,2,3,4]);   print "函数内取值: ", mylist   return # 调用changeme函数mylist = [10,20,30];changeme( mylist );print "函数外取值: ", mylist

传入函数的和在末尾添加新内容的对象用的是同一个引用。故输出结果如下:

函数内取值:  [10, 20, 30, [1, 2, 3, 4]]函数外取值:  [10, 20, 30, [1, 2, 3, 4]]

匿名函数

用lambda关键词能创建小型匿名函数。这种函数得名于省略了用def声明函数的标准步骤。

  • Lambda函数能接收任何数量的参数但只能返回一个表达式的值,同时只能不能包含命令或多个表达式。

  • 匿名函数不能直接调用print,因为lambda需要一个表达式。

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

  • 虽然lambda函数看起来只能写一行,却不等同于C或C++的内联函数,后者的目的是调用小函数时不占用栈内存从而增加运行效率。

语法

lambda函数的语法只包含一个语句,如下:

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

如下实例:

#!/usr/bin/python #可写函数说明sum = lambda arg1, arg2: arg1 + arg2; #调用sum函数print "Value of total : ", sum( 10, 20 )print "Value of total : ", sum( 20, 20 )

?
1
2
3
4
5
6
7
8
9
10
>>> lambda a,b:a*b
<function <lambda> at 0x02212930>
>>> cheng=lambda a,b:a*b
>>> cheng 2 4
SyntaxError: invalid syntax
>>> cheng 2,4
SyntaxError: invalid syntax
>>> cheng(2,4)
8
>>>


0 0
原创粉丝点击