码迷,mamicode.com
首页 > 编程语言 > 详细

python函数

时间:2015-08-06 18:44:11      阅读:159      评论:0      收藏:0      [点我收藏+]

标签:python函数

函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。

函数能提高应用的模块性,和代码的重复利用率。你已经知道Python提供了许多内建函数,比如print()。但你也可以自己创见函数,这被叫做用户自定义函数。

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

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

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

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

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

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

函数语法如下

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

例子:

[root@python day3]# cat print_fun.py 
#!/usr/bin/env python

def printme(string):                #自定义一个函数名叫printme,有一个参数string
	print string                #打印参数string

printme(‘This is the first function.‘)        #将括号中的字符串交给函数printme处理
printme(‘This is Python.‘)

#运行结果
[root@python day3]# python print_fun.py 
This is the first function.                #我们给定的字符串正常出输出来了
This is Python.

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

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

def changeme(mylist):
	mylist.append([1,2,3,4])            #将传入的mylist增加一个元素
	print "get num in function changeme", mylist        #打印mylist

mylist = [10,20,30]    #定义一个列表mylist
changeme(mylist)       #调用函数changeme
print ‘get num from global‘, mylist            #最后打印一次mylist

#整个代码执行过程会打印2次mylist,一次是在函数内部,一次是在函数外部
[root@python day3]# python fun2.py 
get num in function changeme [10, 20, 30, [1, 2, 3, 4]]
get num from global [10, 20, 30, [1, 2, 3, 4]]

命名参数函数

[root@python day3]# cat fun3.py 
#!/usr/bin/env python

def printinfo(name,age):            #定义一个函数,有2个参数    
	print "Name: ",name
	print "Age:  ",age

printinfo(age=50,name="miki")            #调用函数,指定参数的值

#运行结果
[root@python day3]# python fun3.py 
Name:  miki
Age:   50

函数的缺省参数

[root@python day3]# cat fun4.py 
#!/usr/bin/env python

def printinfo(name,age = 35):        #函数的2个默认参数,其中age拥有一个默认值35
	print "Name: ",name
	print "Age:  ",age

printinfo(age=50,name="miki")            #给定2个参数
printinfo(name="miki")                    #这里只给定一个参数name,参数age将使用默认值35

#运行结果
[root@python day3]# python fun4.py 
Name:  miki
Age:   50            
Name:  miki
Age:   35            #这个值是使用的默认参数的值

函数的不定长参数

[root@python day3]# cat fun5.py 
#!/usr/bin/env python

def printinfo(arg1,*vartuple):        #定义了一个不定长函数
	print "output: "
	print arg1                    #打印第一个参数arg1
	for var in vartuple:          #循环打印后面的参数vartuple
		print var

printinfo(10)                         #只给定一个参数
printinfo(70,60,50)                   #给定3个参数,其中第一个参数arg1=70

#运行结果
[root@python day3]# python fun5.py 
output: 
10                #只给定一个参数的输出结果
output: 
70                #给定3个参数的输出结果
60
50

匿名函数

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

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

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

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

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

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

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

如下实例:

[root@python day3]# cat fun_lambda.py 
#!/usr/bin/python

#定义一个lambda函数,有2个参数arg1和arg2,对这2个参数进行+操作
sum = lambda arg1, arg2: arg1 + arg2        #将lambda赋值给sum

print "Value of total : ", sum( 10,20 )     #sum接受了2个参数10,20
print "Value of total : ", sum( 20,20 )     #sum接受了2个参数20,20

#运行结果
[root@python day3]# python fun_lambda.py 
Value of total :  30
Value of total :  40

return语句

return语句[表达式]退出函数,选择性地向调用方返回一个表达式。不带参数值的return语句返回None。之前的例子都没有示范如何返回数值,下例便告诉你怎么做:

[root@python day3]# cat fun_return.py 
#!/usr/bin/env python

def sum( arg1,arg2 ):            #函数接受2个参数
	total = arg1 + arg2      #2个参数的和赋值给total
	print "Inside the function : ",total
	return total             #将total的值return出去

total = sum( 10,20 )             #给sum函数赋予2个值10和20,将函数的整个运行结果赋值给total
print "Outside the function : ",total    #最后打印函数外部的total的值

#运行结果
[root@python day3]# python fun_return.py 
Inside the function :  30
Outside the function :  30

变量和局部变量

定义在函数内部的变量拥有一个局部作用域,定义在函数外的拥有全局作用域。

局部变量只能在其被声明的函数内部访问,而全局变量可以在整个程序范围内访问。调用函数时,所有在函数内声明的变量名称都将被加入到作用域中。如下实例:

[root@python day3]# cat fun6.py 
#!/usr/bin/env python

total = 0  #This is a global varibale.        #这是定义个一个全部变量,初始值为0

def sum( arg1, arg2 ):
	total = arg1 + arg2                    #函数sum内部的变量total
	print "Inside the function local total : ",total
	return total                            #将total的值return出去

sum( 10, 20 )                                   #给sum函数赋予2个值
print "Outside the function global total : ",total    #最后打印total,由于函数sum内部rerurn的结果没有赋予给任何变量,所有这里的total将会使用全局变量total

#运行结果
[root@python day3]# python fun6.py 
Inside the function local total :  30
Outside the function global total :  0


本文出自 “ly36843运维” 博客,请务必保留此出处http://ly36843.blog.51cto.com/3120113/1682268

python函数

标签:python函数

原文地址:http://ly36843.blog.51cto.com/3120113/1682268

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!